Yii2常规控制器的其余URL路由

时间:2016-09-05 10:02:58

标签: rest yii2 yii-url-manager

如何以一种可以重写控制器操作规则的方式扩展 yii \ rest \ UrlRule ?例如,我想生成以下URI:

/user/[username]
/user/keywords
/user/keyword/[key1]/[key2]/[...]
...

以上所有操作都会呈现自己的视图。

2 个答案:

答案 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