2016-05-20 9 views
4

私はゆっくりとYii2に移行したいと考えているかなり大きなYii1アプリケーションを持っています。私はこれを徐々にしたいと思います。Yii2コン​​トローラとYii1コントローラを組み合わせる

私はYii2 and Yii1 integration manualの指示に従っています。

私のアプリケーションは正常に動作しています。

私もyii2-yii-bridgeトリックを試してみましたが、それはまたいくつかの微調整の後に動作するようです。

私のアプリケーションにYiiの両方のバージョンがあることがわかったので、どうすればYii2スタイルのコントローラを追加できますか?

私はシンプルYii2スタイルコントローラを作成する場合は、次のように:

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 

私は私がするために使用していますURLスキームを使用してアクセスすることはできませんので、http://local.url/second/indexが発見されていないようです。

私はYii1スタイル私がいつも行っている方法を作成した場合しかし、それはうまく解決します

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

} 

<controller>/<action>のデフォルトのURLマッピングは、名前空間のコントローラを扱うことができないようだこれを回避する方法はありますか?

答えて

0

統合の主な目的は、Yii 2でしか利用できない機能の一部を使用することです。まだYii 1アプリケーションを実行しているとします。しかし、あなたは新しい機能を備えたいくつかの外部ライブラリを追加します。

Yii 2のコントローラーを使用できるようにするには、Yii 1コアとの深い統合が必要です。

私はアプリケーションのインデックスファイルへのリクエストの分割を提案できます。 .htaccessで新しい機能を作成してください。

関連する問題