2012-05-14 9 views
10

W postaci potwierdzających, znajdę takie kodyJak korzystać z metody Yii :: app() -> end() i jak się różni od exit()?

if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 

Instrukcja mówi, że metoda end() zakończy aplikację. Dlaczego zakończyć aplikację? Poniższe kody nie zostaną wykonane?

+0

Jeśli to pomogło, będę wdzięczny w górę głos. Dzięki! – acorncom

+0

Hmm, dokonaj tej akceptowanej odpowiedzi. Pomaga twojej reputacji i mojej. Dzięki! – acorncom

Odpowiedz

17

Tak, to żądania Ajax i kod ma zwrócić wyniki weryfikacji, a następnie zatrzymać wykonanie kodu. To ten sam pomysł jako funkcji die PHP, ale pozwala Yii uruchomić onApplicationEnd kod czyszczący (jeśli występują)

+0

Dzięki za odpowiedź! – Chris

+0

A jaki inny kod zostanie uruchomiony po zakończeniu akcji? Aplikacja i tak umiera. Lub? – Racky

+0

@racky zobacz moją odpowiedź. Możliwe są zachowania aplikacji, które wykonują inne czynności, takie jak rejestrowanie, czyszczenie bazy danych, itp. – acorncom

2

Wystarczy powiedzieć, że właśnie kończy aplikację. Co sprawia, że ​​różni się od PHP exit() jest to, że wywołuje ona w onEndRequest() przed wyjściem.

Mimo że w dokumentacji jest napisane: status parametr 0 oznacza normalne wyjście, podczas gdy inne wartości oznaczają nieprawidłowe wyjście, nie jest on praktykowany jako taki. Parametr status jest po prostu przekazywany do funkcji exit() (która wyprowadza ją oczywiście!).

Yii::app()->end('saved', true); 

Nawet obiekty mogą być wyprowadzane jak poniżej:

Yii::app()->end(json_encode($data), true); 

Uwaga: (1) onEndRequest() jest podniesiona zaraz po aplikacja przetwarza żądanie. Ta funkcja może służyć do monitowania logów i innych użytecznych funkcji.

Yii Documentation of end()

/** 
* Terminates the application. 
* This method replaces PHP's exit() function by calling 
* {@link onEndRequest} before exiting. 
* @param integer $status exit status (value 0 means normal exit while other values mean abnormal exit). 
* @param boolean $exit whether to exit the current request. This parameter has been available since version 1.1.5. 
* It defaults to true, meaning the PHP's exit() function will be called at the end of this method. 
*/ 

public function end($status=0,$exit=true) 
{ 
if($this->hasEventHandler('onEndRequest')) 
$this->onEndRequest(new CEvent($this)); 
if($exit) 
exit($status); 
} 
Powiązane problemy