【问题标题】:Yii Module code generation problems using Gii使用 Gii 的 Yii 模块代码生成问题
【发布时间】:2011-06-27 11:03:36
【问题描述】:

我刚刚使用 Gii 生成了一个名为 gig 的新模块。使用 Gii 生成模块代码后,我更新了 config/main.php 文件以包含“gig”模块,如下所示:

'import'=>array(
    'application.models.*',
    'application.components.*',
    'application.modules.*',
),

'modules'=>array(
    // uncomment the following to enable the Gii tool

    'gii'=>array(
        'class'=>'system.gii.GiiModule',
        'password'=>'secretpassword',
    ),
    'gig',
),

现在,当我尝试在浏览器中访问自动生成的 Yii 模块代码时,如下所示:

http://localhost/gig/default/index/

我收到以下错误:

DefaultController 找不到请求的视图“索引”。

为了解决这个问题,我更改了模块 DefaultController.php 中的渲染代码:

$this->render('index');

到这里:

$this->render('gig.views.default.index');

此更改解决了问题,但我想知道我是否遗漏了什么,或者 Gii 是否正在为模块生成错误代码?有人遇到过这个问题吗?我的解决方案正确吗?

现在控制器可以找到视图,我重新加载了页面,只是显示以下错误消息:

试图获取非对象的属性

原来是index.php视图文件下面的代码有问题:

$this->breadcrumbs=array(
    $this->module->id,
);

我不确定为什么会这样。我尝试将上面的代码更改为以下内容:

$this->breadcrumbs=array(
    Yii::app()->controller->module->id,
);

但这仍然给我同样的错误信息,“试图获取非对象的属性”。

知道可能出了什么问题吗?设置模块代码时我错过了什么吗?我正在使用 Yii 1.1.7

谢谢!

【问题讨论】:

    标签: yii


    【解决方案1】:

    抱歉,这是我们自己犯的愚蠢错误。我们的一位程序员向 Controller 类添加了一个 __construct 方法,但忘记在该方法中包含 $module 变量,如下所示:

    public function __construct($id='site')
    {
        parent::__construct($id);
    
        //custom code here
    }
    

    如下图添加 $module 变量后,现在一切正常。

    public function __construct($id='site', $module = null)
    {
       parent::__construct($id, $module);
    }
    

    【讨论】:

    • 我不敢相信我今天犯了这个错误!你拯救了我的一天,伙计!
    • 我今天也成功了!谢谢!
    【解决方案2】:

    如果您不需要面包屑,只需删除该代码块即可。如果您确实需要它们,请确保您的 Controller.php(扩展 CController.php)类具有:

    public $breadcrumbs=array();
    

    那么它应该按预期工作。

    我不确定您为什么会遇到 URL/路径问题,但请检查 config/main.php 中的 URL 管理器,看看是否存在导致问题的规则。似乎没有任何规则对我有用,但如果你有一些,请尝试将其放在规则数组中:

    'gig'=>'gig',
    'gig/<controller:\w+>'=>'gig/<controller>',
    'gig/<controller:\w+>/<action:\w+>'=>'gig/<controller>/<action>
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多