Using Yii1 and Yii2 in the same project

I had a project in Yii1.x and now I use Yii2 for the same projects

The project hierarchy is something like this

Project1(yii1)/all yii files + project2(yii2) project2(yii2)/frontend + /common + /backend 

Now I want to know if project2/common/models can be used in project1/protected/controllers

How can I achieve this?

thanks

+7
yii yii2 yii2-advanced-app
source share
1 answer

I would not recommend doing this; instead, it’s better to completely rewrite the old application in Yii2.

But in case of partial migration, please read this item in the section on special topics in the Official Guide.

The following are some important snippets of code:

1) Modification of the script entry:

 // include the customized Yii class described below require(__DIR__ . '/../components/Yii.php'); // configuration for Yii 2 application $yii2Config = require(__DIR__ . '/../config/yii2/web.php'); new yii\web\Application($yii2Config); // Do NOT call run() // configuration for Yii 1 application $yii1Config = require(__DIR__ . '/../config/yii1/main.php'); Yii::createWebApplication($yii1Config)->run(); 

2) The combination of classes Yii :

 $yii2path = '/path/to/yii2'; require($yii2path . '/BaseYii.php'); // Yii 2.x $yii1path = '/path/to/yii1'; require($yii1path . '/YiiBase.php'); // Yii 1.x class Yii extends \yii\BaseYii { // copy-paste the code from YiiBase (1.x) here } Yii::$classMap = include($yii2path . '/classes.php'); // register Yii 2 autoloader via Yii 1 Yii::registerAutoloader(['Yii', 'autoload']); // create the dependency injection container Yii::$container = new yii\di\Container; 

Using the Yii class:

 echo get_class(Yii::app()); // outputs 'CWebApplication' echo get_class(Yii::$app); // outputs 'yii\web\Application' 
+7
source share

All Articles