2015-09-28 22 views
7

Tôi đã có một dự án trong Yii1.x và bây giờ tôi đang sử dụng Yii2 cho các dự án tương tựSử dụng Yii1 và Yii2 trong cùng một dự án

hệ thống phân cấp dự án là một cái gì đó như thế này

Project1(yii1)/all yii files + project2(yii2) 

project2(yii2)/frontend + /common + /backend 

Bây giờ tôi muốn biết nếu có thể sử dụng project2/common/models trong project1/protected/controllers

Làm cách nào để có thể thực hiện tác vụ này?

Cảm ơn bạn

Trả lời

7

Tôi không khuyên bạn nên làm điều đó, thay vào đó tốt hơn là viết lại hoàn toàn ứng dụng cũ trong Yii2.

Nhưng trong trường hợp di chuyển một phần, vui lòng đọc this paragraph trong Mục chủ đề đặc biệt trong Hướng dẫn chính thức.

Dưới đây là một số đoạn mã quan trọng từ đó:

1) Việc sửa đổi kịch bản 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) Sự kết hợp của Yii lớp:

$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; 

Cách sử dụng của Yii lớp học:

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

Tôi là người mới bắt đầu trong khung này nên tôi không biết tài liệu đó đang cố gắng nói gì. Có hướng dẫn từng bước nào khác mà tôi có thể theo dõi không ?? –

Các vấn đề liên quan