这是我第一次在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
答案 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
很有用。