【问题标题】:Yii, using a module in main controllerYii,在主控制器中使用模块
【发布时间】:2012-11-12 15:04:14
【问题描述】:

尝试在 Yii 中使用模块并希望从主控制器 (SiteController) 访问模块的方法。 使用 Gii 创建模块,模块名称为 Car。 尝试访问 RequestController 模块 Car 中的方法搜索。

echo Yii::app()->Car->Request->search();

Yii 跟我说话

未定义属性“CWebApplication.carhire”。

有人知道如何从其他控制器访问模块的方法吗? 谢谢

【问题讨论】:

    标签: module yii


    【解决方案1】:

    您的模块没有进入应用程序范围。即components 可以通过Yii::app()-> 模块访问,但是可以通过Yii::app()->getModule($moduleName)-> 访问。

    不过,这并不能真正帮助在控制器上运行操作。如果不完全打破抽象模块的要点,也很难获得访问权限。

    bool.dev 的回答 Here 是我见过的最好的方法,如果你真的需要的话。

    但您遇到的问题可能指向您网站结构的潜在问题。如果您需要在应用程序的其他地方访问模块控制器功能,也许它不应该在模块中?

    【讨论】:

    • 在 Yii ideology Module - 是一个独立的程序模块,有视图、控制器等。我想用几个不同的模块创建站点。每个人都会做自己的工作并且不会相互交互,只有主控制器站点必须调用每个模块。
    • 为什么需要从主控制器调用它们?只是好奇,因为可能有不同的方法可以解决您的问题。
    • 正如我上面解释的,我想构建多程序应用程序,每个模块必须是一个独立的程序。每个模块都将完成它们的工作,并且不会相互交互。如何向你解释这个 - 我不知道。
    • 好的,是的,这是一个很好的做法,尝试在时间/业务允许的情况下保持模块化。但我不明白为什么主控制器必须调用它。这是否可以通过使用更好的 URL 规则来解决?除非这是非常具体的事情,在这种情况下,您的模块可以更好地构建,以允许从主站点更轻松地进行外部访问。
    • 是的,我认为你是对的,我会尝试构建更多不正确的 URL 规则。
    猜你喜欢
    • 2014-03-17
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多