0

URL をコントローラーに自動的にマップしようとしています。

example.com/test | MyBundle:デフォルト:インデックス

example.com/test/login | MyBundle:デフォルト:ログイン

それが私のアプローチですが、まだ機能していません。問題は、アクションはオプションである必要があり、提供されていない場合はデフォルトで「インデックス」にする必要があるということです。

app/config/routing.php

use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;

// load route collection object
$collection = new RouteCollection();

// add default route
$collection->add('default', new Route('/{_controller}/{_action}', array(
    '_controller' => 'MyBundle:Default:Index',
        ), array('_method' => 'GET')
        )
);

どんな助けでも大歓迎です!

4

1 に答える 1

1

symfony はそのワークフローで Request-Object の '_controller' と呼ばれる属性を使用します。ある時点で、属性は次のようなもので満たされます

  • MyBundle:Default:Index または
  • project.bundle.controller:method (コントローラーをサービスとして登録した場合)

この属性をルートのパラメーターとして使用することもできます。

use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;

// load route collection object
$collection = new RouteCollection();

// add default route
$collection->add('default', new Route('/{_controller}'));

次に、 http://example.com/MyBundle:Default:Indexを呼び出すと、コントローラーが正しく解決されて実行されます。

ただし、これは実際には悪い習慣であるため、本番環境では使用しないでください。

于 2013-06-07T10:07:31.147 に答える