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

时间:2014-11-18 17:14:03

标签: php yii

这是我第一次在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

1 个答案:

答案 0 :(得分: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's official document about URL Management很有用。