2016-05-20 11 views
4

Ich habe eine ziemlich große Yii1-Anwendung, die ich langsam nach Yii2 migrieren möchte. Ich würde das gerne schrittweise machen.Kombinieren von Yii2-Controllern mit Yii1-Controllern

Ich habe die Anweisungen in der Yii2 and Yii1 integration manual befolgt.

Und meine Anwendung läuft gut.

Ich habe auch den yii2-yii-bridge Trick versucht und es scheint auch nach einigen Verbesserungen zu arbeiten.

Meine Frage ist, jetzt, da ich weiß, dass ich beide Versionen von Yii in meiner Anwendung habe, wie kann ich anfangen, Yii2 Style Controller hinzuzufügen?

Wenn ich eine einfache Yii2 Stil Controller zu erstellen, wie folgt aus:

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 

ich zugreifen kann es nicht das URL-Schema verwenden, die ich gewohnt bin, so hat http://local.url/second/index nicht scheinen, zu finden sind.

aber wenn ich eine Yii1 Stil die Art und Weise schaffe ich es immer getan haben, löst es ganz gut:

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!!"; 
    } 

} 

Es scheint, dass die Standard-URL-Mapping von <controller>/<action> nicht mit einem Namensraum-Controller umgehen kann, ist es eine Möglichkeit, um dieses?

Antwort

0

Das Hauptziel der Integration besteht darin, einige der nur in Yii 2 verfügbaren Funktionen zu verwenden. Stellen Sie sich vor, dass Sie noch eine laufende Yii 1-Anwendung haben. Sie fügen jedoch eine externe Bibliothek mit neuen Funktionen hinzu.

Um Controller von Yii 2 verwenden zu können, sollten Sie eine tiefe Integration mit Yii 1 Core vornehmen.

Ich kann nur vorschlagen, Anforderungen an Anwendungen Indexdateien, z. in .htaccess und erstellen Sie einige neue Funktionen in Yii 2.