0

このルートを機能させたい

forum/forum-name.9 -> controller = forum, action = index, id = forum-name.9
forum/forum-name.9/edit -> controller = forum, action = edit, id = forum-name.9
forum/rules -> controller = forum, action = rules, id = null 

私は試した

Route::set('default', '(/<controller>)((/<id>)(/<action>)))', 
 array(
    'controller' => '[a-zA-Z_-]+',
    'action' => '[a-zA-Z_-]+',
   'id' => '[a-zA-Zа-я0-9.-]+',
))
->defaults(array(
    'controller' => 'forum',
    'action' => 'index',
    'id'=>null
));

しかし、それは間違っています。id には文字のみを含めることができるようになったためです。

4

2 に答える 2

2

ルートは具体的である必要があります。1 つのルートを使用してすべてをソレにしようとしないでください。これらはあなたが望むことをします。

Route::set('forum/rules', 'forum/rules')
->defaults(array(
    'controller' => 'forum',
    'action' => 'rules',
));

Route::set('forum', 'forum/(<name>.)<id>(/<action>)',
 array(
    'action' => 'edit', // the action must not be present (and default to 'index') or be 'edit'
    'name' => '\w+',
   'id' => '\d+',
))
->defaults(array(
    'controller' => 'forum',
));

-また、何かをオーバーロードして置き換えた場合にのみ、アクションとコントローラーの正規表現に追加してください。PHP クラスおよび関数/メソッド名にダッシュを含めることはできません。

于 2013-09-17T09:03:27.480 に答える
0

これは私の問題を解決しました

'id' => '(\w+.)?\d+'
于 2013-09-17T05:57:50.460 に答える