严重怀疑yii2的restful教程是乱写的 [ 2.0 版本 ]
'urlManager' => [
'enablePrettyUrl' => true,
//'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'category'],
],
],
enableStrictParsing这个属性,所谓的严格匹配rules规格?如果注释去,访问就正常,加上就404.
而且教程说的路由控制器默认是复数,但是我加不加都能访问(y结尾的改成ies我是明白的)
最后还有个疑问。自己写了一个方法,访问却是404.
public function actionGetList()
{
return '123';
}
yii2的demo真心太少,百度出来的都是互相copy的,不知道这里是不是最后的避风塘了?
共 8 个回答
-
两方面原因,一是教程本身不完备,二是你没完全理解REST的意义
RESTful真意是以资源为中心而不是页面,所以YII2给每个资源只给了有限的几个action,而且是以Action类的形式写的,框架默认的action都写在yii\rest包下(XXXAction.php就表示相应的动词操作,源代码很少,你可以直接看看),如果这个资源的所有动词都是默认的话是则它的controller里除了modelClass是不用写任何代码的.如果想要自定义动词必须继承rest包下对应的Action类,然后在controller重写actions指向你的新action
共 1 条回复hanxiaoqing123 回复于 2017-01-12 12:45 回复恩,涨姿势了
hanxiaoqing123 觉得很赞 -
xjx7514329 回答于 2015-08-18 16:04 举报
我也有好多看不懂的,慢慢来呗
-
sh_xiaojun 回答于 2016-03-29 20:36 举报
我和你一样遇到这样的问题
-
我没有用yii\rest\UrlRule这个路由规则,而是最基本的一般URL规则'<controller:\w+>/<action:\w+>' => '/'。
参考:http://www.yiichina.com/tutorial/868 -
今天我也碰到类似问题了:
http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html
根据上面这个官网教程写的例子,访问时是有问题的:
访问以下网址时报404错误(无此页面):http://localhost/users/5
正确的写法是:(应返回id=5的记录详情信息)
http://localhost/user/5
需要注意的是,访问列表信息的链接是正确的(要用复数形式):
http://localhost/users
如果要保证访问列表信息和详情信息时都使用单数形式,需要在config\main.php加个参数:
'pluralize'=>false,
即:
D:\phpwork\advanced\frontend\config\main.php 'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ [ 'class' => 'yii\rest\UrlRule', 'controller' => 'user', 'pluralize'=>false, ], ], ],
共 3 条回复@暗桔子 可以参考下面这个贴子:
http://www.yiichina.com/topic/6905神秘人166 觉得很赞
kiddkyd
最后登录:2015-09-05
在线时长:0小时48分
- 粉丝0
- 金钱10
- 威望0
- 积分10