instalar - yii modules
Combinando controladores Yii2 con controladores Yii1 (1)
Tengo una aplicación Yii1 bastante grande que quiero migrar lentamente a Yii2. Me gustaría hacer esto gradualmente.
He seguido las instrucciones en el manual de integración Yii2 y Yii1 .
Y mi aplicación está funcionando bien.
También probé el truco del yii2-yii-bridge y también parece funcionar después de algunos ajustes.
Mi pregunta es, ahora que sé que tengo ambas versiones de Yii en mi aplicación, ¿cómo puedo comenzar a agregar controladores de estilo Yii2?
Si creo un controlador de estilo Yii2 simple, así:
namespace app/controllers;
use Yii;
use yii/filters/AccessControl;
use yii/web/Controller;
use yii/filters/VerbFilter;
class SecondController extends Controller {
public function behaviors()
{
return [
''access'' => [
''class'' => /yii/filters/AccessControl::className(),
''only'' => [''index''],
''rules'' => [
// allow authenticated users
[
''allow'' => true,
''roles'' => [''@''],
],
// everything else is denied
],
],
];
}
public function actionIndex()
{
Yii::trace("(!!!) SecondController::index called!!!");
return "SecondController::index!!";
}
} // class
No puedo acceder utilizando el esquema de URL al que estoy acostumbrado, por lo que parece que http: //local.url/second/index no se encuentra.
Sin embargo, si creo un estilo Yii1 como lo hice siempre, se resuelve muy bien:
class ThirdController extends Controller {
public function accessRules() {
return array(
array(''allow'',
''actions'' => array(''index''),
''users'' => array(''*''),
),
);
}
public function actionIndex() {
Yii::trace("ThirdController::index called!!!");
return "ThirdController::index!!";
}
}
Parece que el mapeo de url predeterminado de <controller>/<action>
no puede tratar con controladores de espacio de nombres ¿hay alguna forma de evitar esto?
El objetivo principal de la integración es usar algunas de las funciones solo disponibles en Yii 2. Imagine que todavía tiene una aplicación Yii 1 en ejecución. Pero agrega una biblioteca externa con nuevas funciones.
Para poder usar los controladores de Yii 2 debe hacer una integración profunda con Yii 1 core.
Solo puedo sugerir dividir solicitudes a archivos de índice de aplicaciones, por ejemplo, en .htaccess y crear nuevas funcionalidades en Yii 2.