1

モジュール mymodule があり、その中にインデックス Controller がある場合。サブアクションを「サブアクション」として持っている

通常、私はページにアクセスします

   http://www.mywebsite/index.php/mymodule/index/subaction

次のようなコードからURLを設定するにはどうすればよいですか

   http://www.mywebsite/index.php/subaction
   or
   http://www.mywebsite/index.php/mymodule/subaction

注 :: 新しいコントローラーを作成したくありません。これを同じインデックス コントローラーに入れたいのです。

4

2 に答える 2

0

MagentoのURLとコントローラーのマッチングは、URLが特定の形式であると想定する標準ルーターを介して機能します。変更したい場合は、いくつかのオプションを自由に使用できます。

  1. 非推奨の構成ベースのURLの書き換え
  2. core_url_rewriteテーブルにURL書き換えエントリを作成します
  3. 使用するURLパターンに一致するカスタムルータークラスを作成します

URLマッチングがどのように機能するかを検討するときは、MagentoがネイティブURL計算ツールを使用してURLを構築する方法と、リクエストを照合する方法を検討する必要があります。

于 2012-09-05T11:48:37.723 に答える
-3

ルートを使用してこれを行うことができます

ブートストラップで次のことを行います

protected function _initMyRoutes() {
    $this->bootstrap('frontController');
    $front  = $this->getResource('frontController');
    $router = $front->getRouter();

    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', APPLICATION_ENV);
    $router->addDefaultRoutes();
    $router->addConfig($config, 'routes');

    return $router;

}

configs ディレクトリに routes.ini というファイルを作成し、その中に以下を配置します。

routes.myRoute.type = "Zend_Controller_Router_Route_Static"
routes.myRoute.route = "/subaction/" 
routes.myRoute.defaults.module = "mymodule"
routes.myRoute.defaults.controller = "index"
routes.myRoute.defaults.action = "subaction"

また

ブートストラップに直接ルートを追加できます

protected function _initMyRoutes() {
    $this->bootstrap('frontController');
    $front  = $this->getResource('frontController');
    $router = $front->getRouter();
    $router->addDefaultRoutes();

    $route = new Zend_Controller_Router_Route_Static(
        'subaction',
        array('module' => 'mymodule', 'controller' => 'index', 'action' => 'subaction')
    );
    $router->addRoute('subaction', $route);

    return $router;

}

これでうまくいくはずですが、ルートを使用することは本当に面倒です。

ZF マニュアルのルートの詳細

于 2012-09-05T10:41:46.893 に答える