yii2 URL管理两个命名子模式

kirSeNN

我的Yii 2.0应用程序中有模块结构,因此我需要调用类似

"module/controller/action"

但是90%的模块和控制器具有相同的名称,例如看起来

"news/news/index"
"support/support/index",
"profile/profile/update"

看起来不好,我只想查看“配置文件/更新” ...然后在UrlManager中创建以下规则:

"<controller:\w+>/<action:\w+>" => "<controller>/<controller>/<action>"

这使我得到以下错误:“ preg_match():编译失败:两个命名的子模式在偏移量35处具有相同的名称”

如何解决此问题,而不是为每个模块创建不同的规则,我不希望我的配置文件对数十个模块有多个规则。

kirSeNN

我找到了更好的解决方案。PCRE支持修饰符“?J”,该修饰符允许子模式使用重复的名称。我们所需要做的就是将这个修饰符添加到Yii将用于解析url的模式中。不幸的是,我们必须在yii / web / UrlRule更改行中手动添加它:

$this->_routeRule = '#^' . strtr($this->route, $tr2) . '$#u';

到:

$this->_routeRule = '#^(?J)' . strtr($this->route, $tr2) . '$#u';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章