我在 Yii 框架上玩得很好,现在我想更深入一点,我想做的是设置一个应用程序,其中几个不同的 URL 将指向同一个控制器。
通常 domain.com/content 将指向 MVC 中的标准类 ContentController。
我想要做的是设置三个控制器(可能更多,但这会启动),即 ArticlesController、DisplayController 和 SplashController。
然后,我将为客户端设置本质上是 CMS,他们将能够创建任意数量的页面并将它们指向上述三个控制器,我已经设置它们来处理数据。
例如,我的客户可以设置以下页面:新闻、通知、技术并将它们都指向 ArticlesController,并且还设置页面:管理、特价、支持并将它们都指向 DisplayController。
我知道所有这些控制器都可以使用 Gii 模块创建,但在这种情况下它不是一个选项,因为我认为这不适合非技术人员。
我只是希望我的客户能够登录到 CMS,决定他要创建一个名为“randompage”的新页面,使用下拉菜单将其指向 ArticlesController,然后为它写一堆文章,现在有了这些可在 domain.com/randompage/article-1 domain.com/randompage/article-2 访问的文章
使用将指向站点/错误的标准设置,因为没有控制器 RandompageController
到目前为止我所做的是在 Controller 类中创建一个构造函数,我可以在其中覆盖控制器 ID
class Controller extends CController {
function __construct($id) {
// Code here which successfully pulls from the database
// which controller the current page should point to.
parent::__construct($newControllerID)
}
}
如果我签入 CController 类,$this->_id = 文章、显示或启动但应用程序本身仍会加载站点/错误
我猜我必须在其他地方设置/覆盖控制器。我努力了
Yii::app()->setController($newControllerID)
但这没有任何效果
也许 Yii 已经设置好,并且必须为每个 URL 要求一个特定的控制器,但这意味着为客户开发相当严格的解决方案,并要求他们每次想要添加新控制器时都调用开发人员。
希望我已经解释了我正在努力做好的事情。