1

私の IndexController には、現在 indexAction (ホームページ)、loginAction、および logoutAction があります。URL から「/index/」を削除して、domain.com/index/login ではなく domain.com/login を取得しようとしています。

これを達成するための最もクリーンな方法は何ですか? 使用できる正規表現はありますか? URL に /index/ を含めたくありません。

改善できると私が信じている現在の解決策を以下に示します。また、addRoute() の最初のパラメーターは何をしますか?

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initViewHelpers()
  {
    $front  = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $router->addRoute('login',
      new Zend_Controller_Router_Route('login/*', array(
        'controller' => 'index',
        'action'     => 'login'
      ))
    );
    $router->addRoute('logout',
      new Zend_Controller_Router_Route('logout/*', array(
        'controller' => 'index',
        'action'     => 'logout'
      ))
    );
  }
}
4

1 に答える 1

2

改善するものは何もありません。すべてのアクションのルートを作成する必要があります。これにより、コードを変更せずにルートのデフォルト (モジュール/コントローラー/アクション) を変更できます。

最初のパラメーターは、ビューで url() ヘルパーで使用する必要があるルート名です。

<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>

アップデート。URLに「インデックス」を含まないルートが1つだけ必要な場合は、そのようなルートを使用できます。

$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);
于 2010-03-09T20:08:30.230 に答える