这是我第一次在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
的官方文档很有用。