2012-05-14 19 views
10

En la forma de validación, que se encuentran dichos códigosCómo usar el método Yii :: app() -> end() y cómo es diferente de exit()?

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

El manual dice que el fin del método() pondrá fin a la aplicación. ¿Por qué finalizar la aplicación? Los siguientes códigos no se ejecutarán?

+0

Si esto ayudó, le agradecería una Answer. ¡Gracias! – acorncom

+0

Hmm, haz que una respuesta aceptada. Ayuda a tu reputación y la mía. ¡Gracias! – acorncom

Respuesta

17

Sí, es una solicitud de Ajax y se supone que el código devuelve los resultados de la validación y luego detiene la ejecución del código. Es la misma idea que la función de matriz Php, pero permite que Yii se ejecute en el código de limpieza de aplicación (si corresponde)

+0

Gracias por su respuesta! – Chris

+0

¿Y qué otro código se ejecutará cuando la acción finalice? La aplicación muere de todos modos. ¿O? – Racky

+0

@ racky ver mi respuesta. Es posible tener comportamientos para la aplicación que hacen otras cosas, como el registro, la limpieza de la base de datos, etc. – acorncom

2

Simplemente diciendo, termina la aplicación. Lo que lo hace diferente de php exit() es que llama al onEndRequest() antes de salir.

Aunque la documentación dice status el parámetro 0 significa salida normal, mientras que otros valores significan salida anormal, no se practica como tal. El parámetro status se pasa simplemente a la función exit() (que lo genera, por supuesto).

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

Incluso los objetos pueden salir como a continuación:

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

Nota: (1) onEndRequest() se eleva justo después de la aplicación procesa la solicitud. Esta función se puede utilizar para solicitar registros y otras funciones útiles.

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); 
} 
Cuestiones relacionadas