1

私の 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(): コンパイルに失敗しました: 2 つの名前付きサブパターンがオフセット 35 で同じ名前を持っています」というエラーが表示されます。

モジュールごとに異なるルールを作成する代わりに、この問題を解決する方法、構成ファイルに 10 個のモジュールの複数のルールを含めたくありません。

4

2 に答える 2

1

より良い解決策を見つけました。PCRE は、サブパターンの重複名を許可する修飾子「?J」をサポートしています。必要なのは、Yii が URL の解析に使用するパターンにこの修飾子を追加することだけです。残念ながら、yii/web/UrlRule 変更行に手動で追加する必要があります。

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

に:

$this->_routeRule = '#^(?J)' . strtr($this->route, $tr2) . '$#u';
于 2014-08-29T07:42:48.073 に答える
-1

これは、DefaultController のようにデフォルト コントローラに名前を付ける正当な理由です。だからルールは"<module:\w+>/<action:\w+>" => "<module>/default/<action>"

于 2014-08-28T07:38:47.077 に答える