Yii,来自模块的对动作控制器的无效请求


Yii, invalid request on action's controller from a module

这是我第一次在Yii中构建模块,这个模块是关于一个可以从其他服务器和应用程序收集数据的API,我已经通过GII创建了模块并将模块添加到配置文件中,目前一切正常。我像往常一样在这个带有动作索引的 API 模块内创建了一个新控制器,但仍然一切正常,但是当我向该控制器添加另一个操作并尝试在浏览器上访问它时,我收到"您的请求无效"消息,我尝试更改控制器的名称,因为我有另一个同名但在模块外部的控制器, 还尝试更改操作名称,但仍然没有线索。

控制器:

<?php 
Class ItemsController extends Controller
{
    public function actionIndex()
    {
        $items = Items::model()->findAll();
        header('Content-Type: application/json');
        foreach($items as $item)
            echo json_encode($item->attributes);
    }
    public function loadModel($id)
    {
        $model = Items::model()->findByPk($id);
        if($model)
            return $model;
    }
    public function actionData($id)
    {
        $item = $this->loadModel($id);
        if($item)
        {
            header('Content-Type: application/json');
            echo json_encode($item);
        }
        else
        {
            throw new Exception("Data could not be found", 404);
        }
    }
}
?>

此脚本有什么问题?

编辑:网址是127.0.0.1/APP/api/item/dat/2

您似乎正在使用默认情况下没有模块规则的urlManager。在main.php配置文件中,将以下行添加到rules中:

'<module:'w+>/<controller:'w+>/<action:'w+>'=>'<module>/<controller>/<action>',

如果您想提供 ID,请添加以下行:

'<module:'w+>/<controller:'w+>/<action:'w+>/<id:'d+>'=>'<module>/<controller>/<action>',

为了编写你自己的自定义规则(也更熟悉),你可能会发现 Yii 关于URL Management的官方文档很有用。