如何以一种可以重写控制器操作规则的方式扩展 yii \ rest \ UrlRule ?例如,我想生成以下URI:
/user/[username]
/user/keywords
/user/keyword/[key1]/[key2]/[...]
...
以上所有操作都会呈现自己的视图。
答案 0 :(得分:0)
您无需延长yii\rest\UrlRule
。只需将您的规则添加到UrlManager
的路由,方法是将其放在extraPatterns
yii\rest\UrlRule
的{{1}}属性上。
例如,假设您在控制器中定义了list
操作:
class BarController extends Controller
{
public $modelClass = 'app\models\Foo';
public function actionList()
{
return ['id' => 1];
}
}
然后在配置文件中添加额外路由:
<?php
// some configs are here
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => [
'v1/bar',
],
'extraPatterns' => [
'GET list' => 'list',
],
],
],
],
// and some other configs are here
现在您可以使用/v1/bars/list
浏览API。阅读Yii2 Documentations了解更多示例。
答案 1 :(得分:0)
您必须在ActiveController中更改Controller的扩展
class ArticleController extends ActiveController