php - 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;
}
我应该发布整个配置吗?
解决方案
默认情况下,控制器 ID 应仅包含以下字符:小写英文字母、数字、下划线、连字符和正斜杠。例如,article 和 post-comment 都是有效的控制器 ID,而 article?、PostComment、admin\post 则不是。
请参阅此链接。
推荐阅读
- java - 为什么菜单没有添加到 Android 的工具栏?
- mqtt - Paho C 库中的 MQTT 数据包加密/解密 API
- java - 有没有办法拆分或减小我的字符串数组的大小?
- elm - Elm 中的通用模式匹配
- loops - 循环优化
- r - R - 按名称将多个 2 级元素附加到列表的每个 1 级元素
- python - Plotly 未在 PyCharm 上显示图形
- sql-server - 如何在 SQL SERVER 中将十进制值转换为十六进制
- excel - 填充和替换和公式的问题
- android - 无法解析外部依赖项 com.google.gms:google-services:4.2.0,因为没有定义存储库。安卓工作室 3.5