qiliux
- qiliux 回答了问题 YII2 rest 使用过程中的几个问题
详细回答问题3:
如果你在model中不override方法 extraFields()获取object,你在URL中添加expand字符是无效的。
因为你想想index获得了一张表内容的内容,他怎么知道你的外键的对象。
所以我们override此方法并返回相应的对象。示例如下,url?expand=roompublic function extraFields() { return ['room' => function(){ return $this->room; }]; }
- qiliux 评论了教程 yii2 关于提交表单csrf验证问题
你也可以把_csrf关了吧。
请重写UrlRule类。
给你个示例如下:`<?php namespace app\components; use yii\web\UrlRuleInterface; use yii\base\Object; class NewsUrlRule extends Object implements UrlRuleInterface{ /* 此函数可以创建Url,辅助 yii\helpers\Url类创建Url时使用。 */ public function createUrl($manager, $route, $params) { if ($route === 'news/item-detail') { if (isset($params['title'])) { return 'news/'.$params['title']; } } return false; // this rule does not apply } //parse请求 public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); if (preg_match('%^([^\/]*)\/([^\/]*)$%', $pathInfo, $matches)) { if($matches[1] == 'news'){ $params = [ 'title' => $matches[2]]; return ['news/item-detail', $params]; }else{ return false; } } return false; // this rule does not apply } } ?>`
然后在组件中配置相应的类
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules'=>[ ['class' => 'app\components\NewsUrlRule'], //配置缺省路由规则。 'news/<year:\d{4}>/item-url-test' => 'news/item-url-test', [ 'pattern' => 'news/<category:\w+>/item-url-test', 'route' => 'news/item-url-test', 'defaults' => ['category' => 'shopping'], ], ], ],
@qq3737002 好吧。我想复杂了。。
- qiliux 赞了回答
Apache中没有捕获到的主机名,默认使用第一个虚拟主机。
请重写UrlRule类。
给你个示例如下:`<?php namespace app\components; use yii\web\UrlRuleInterface; use yii\base\Object; class NewsUrlRule extends Object implements UrlRuleInterface{ /* 此函数可以创建Url,辅助 yii\helpers\Url类创建Url时使用。 */ public function createUrl($manager, $route, $params) { if ($route === 'news/item-detail') { if (isset($params['title'])) { return 'news/'.$params['title']; } } return false; // this rule does not apply } //parse请求 public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); if (preg_match('%^([^\/]*)\/([^\/]*)$%', $pathInfo, $matches)) { if($matches[1] == 'news'){ $params = [ 'title' => $matches[2]]; return ['news/item-detail', $params]; }else{ return false; } } return false; // this rule does not apply } } ?>`
然后在组件中配置相应的类
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules'=>[ ['class' => 'app\components\NewsUrlRule'], //配置缺省路由规则。 'news/<year:\d{4}>/item-url-test' => 'news/item-url-test', [ 'pattern' => 'news/<category:\w+>/item-url-test', 'route' => 'news/item-url-test', 'defaults' => ['category' => 'shopping'], ], ], ],
- qiliux 2015-08-14 已签到连续签到4天,获得了20个金钱