3

次のルートを に追加しましたPhalcon\MVC\Router:

$router = new Phalcon\Mvc\Router();

$router->removeExtraSlashes(true)
    ->setDefaultNamespace('My\Controllers')
    ->setDefaultModule('default')
    ->setDefaultController('index')
    ->setDefaultAction('index');

$router->add('/admin/:controller/:action/:params', [
    'module' => 'admin',
    'controller' => 1,
    'action' => 2,
    'params' => 3,
    'namespace' => 'My\Admin\Controllers'
])->setName('admin_module');

以下のURLを扱っています。

  1. /admin/foo/bar/baz-うまくいきます。adminモジュール、fooコントローラー、barアクション、"baz"パラメーターを取得します。

  2. /admin/foo/bar-うまくいきます。adminモジュール、fooコントローラー、barアクションを取得します。

  3. /admin/foo-一致しませんadminモジュール、fooコントローラー、indexアクションを取得することを期待しています。

  4. /admin-一致しませんadminモジュール、indexコントローラー、indexアクションを取得することを期待しています。

質問:

ルート セグメントをオプションにして、コントローラとアクション名の提供されたデフォルト値をデフォルトにする方法を教えてください。と の余分なルートを定義することは避けたいと思い/adminます/admin/:controller

ありがとうございました。

4

1 に答える 1

2

これを機能させる最も一般的な方法は、同じオプション ( の 2 番目の引数) を使用して各パターンをRouterカスタムとしてに追加することです。アノテーション ルートに関しては、メソッドにいくつかのディレクティブを選択することをお勧めします。この方法は、(ルート名)による便利な生成が普遍的なものよりも高速になるため、使用法が重視されています。RoutepathsRoute::add()@RouteActionURLRoute

よろしく

于 2013-08-13T09:45:34.320 に答える