首页 > 解决方案 > Yii2 rest\UrlRule 从多字控制器名称生成什么样的路由?

问题描述

我想我应该为这样一个愚蠢的问题道歉,但是 Yii2 将为 BigLongControllerNameController.php 生成什么 URL?

我想,应该是 /big-long-controller-name/ ?

在我的情况下不起作用,我得到 404

我还在浏览器和配置中尝试了 biglongcontrollername、big_long_controller_name、bigLongControllerName。文档无济于事,要么我是盲人,要么 REST 路由规则对每个人来说都很明显,没有在 Yii2 文档中指定它们

我当前的路由规则

        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' =>
                    [
                        'group',
                        'course',
                        'user',
                        'teacher',
                        'holiday',
                        'pupil',
                        'additional',
                        'degree',
//                        'big-long-controller-name',
//                        'BigLongControllerName',
//                        'bigLongControllerName',
//                        'big_long_controller_name',
                    ]
                ],
                '/' => 'site/index',
                '/auth' => 'site/auth',
            ],
        ],

控制器没有任何特别之处。当我将它重命名为 AdditionalController.php 时它工作得很好

class BigLongControllerNameController extends RESTController
{
    public $modelClass = 'app\models\AdditionalFieldOption';

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['access']['except'] = ['view', 'index', 'options'];
        $behaviors['access']['rules'] =
        [
            [
                'actions' => ['view', 'index', 'options', 'update', 'delete', 'create'],
                'allow' => true,
                'roles' => ['admin'],
            ],
        ];
        return $behaviors;
    }

我应该发布整个配置吗?

标签: phprestyii2

解决方案


默认情况下,控制器 ID 应仅包含以下字符:小写英文字母、数字、下划线、连字符和正斜杠。例如,article 和 post-comment 都是有效的控制器 ID,而 article?、PostComment、admin\post 则不是。

请参阅此链接


推荐阅读