問題が発生しましたが、それを機能させるための適切な解決策が見つからないようです。Zend Framework プロジェクトにいくつかの動的ルートを作成する必要があります。私の問題が何であるかを簡単に説明します。
デフォルト ルートを「拡張」する動的なカスタム ルートが必要です ( module/controller/action/params
)。私が取り組んでいるプロジェクトにはいくつかのパートナーがいて、ルートはそれらと連携する必要があります。パートナーを保存するために、静的クラスを作成しました。これは次のようになります。
<?php
class App_Partner
{
static public $partners = array(
array(
'name' => 'partner1',
'picture' => 'partner1.jpg'
),
array(
'name' => 'partner2',
'picture' => 'partner2.jpg'
),
array(
'name' => 'partner3',
'picture' => 'partner3.jpg'
)
);
static public function routePartners() {
$partners = array();
foreach(self::$partners as $partner) {
array_push($partners, strtolower($partner['name']));
}
$regex = '(' . implode('|', $partners) . ')';
return $regex;
}
}
正しいルートを作成するために使用するApp_Partner::routePartners()
ような文字列を返してください。(partner1|partner2|partner3)
私の目標は、Bootstrap で設定したすべてのルートの各パートナーのカスタム ルートを持つことです。したがって、ルートadd-product.html
セットがある場合は、各パートナーに対してpartner1/add-product.html
、partner2/add-product.html
およびとして機能するようにしpartner3/add-product.html
ます。また、partner1/
はpartner2/
にpartner3
ルーティングする必要がありdefault/index/index
ます。
実際、私は以下のようなルートを使用してこれを機能させました。
<?php
$routeProposal = new Zend_Controller_Router_Route_Regex(
App_Partner::routePartners() . '?/?proposals.html',
array(
'module' => 'default',
'controller' => 'proposal',
'action' => 'index',
'page' => 1
),
array( 1 => 'partner'),
"%s/proposals.html"
);
$router->addRoute('proposal', $routeProposal);
問題
リクエスト URI でパートナーを使用すると、上記のルートは正常に機能しますが、そうしないと、public//proposals.html
上記のルートで設定された逆のルートが"%s/proposals.html"
. URL ビュー ヘルパーを使用して URL を作成し、逆ルートが設定されていない場合、これを示す例外が発生するため、この逆ルートを回避する方法を見つけることができないようです。
add-product.html
また、デフォルトの方法 ( など)になるパートナー セットなしで動作するルートも必要ですproposals.html
。