で
多くのおかげで、あなたはそのルートになる単一レベルの要求カスタムルートを使用することができます。ただし、これはデフォルトルートを上書きします。モジュールを使用している場合、これはもう動作しませんexample.com/<module>
。
これまでは静的なページのみでしたが、これはまだどうかをテストするためのプラグインを使用していた
example.com/<module>
example.com/<controller>
私はこれをしたように動作しますので、デフォルトルートを維持しながら、
example.com/<some-id>/about
:これに代えて
example.com/about
:私はこれを望んでいました私の要求を派遣することができた。要求がデフォルトルートを使用してディスパッチできなかった場合は、リクエストを適切なモジュールに変更してページをロードします。ここにサンプルプラグインがあります:
class My_Controller_Plugin_UsernameRoute extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
if (!$dispatcher->isDispatchable($request)) {
$username = $request->getControllerName();
$request->setModuleName('users');
$request->setControllerName('dashboard');
$request->setActionName('index');
$request->setParam('username', $username);
/** Prevents infinite loop if you make a mistake in the new request **/
if ($dispatcher->isDispatchable($request)) {
$request->setDispatched(false);
}
}
}
}
私はあなたがすることができる最高のはwebsite.com/user/usernameだろうと思います。私はあなたが単にwebsite.com/usernameを持つことはできないと思う。 – Marcin
@Marcin:まあ、OPはおそらく彼が示唆しているように(すべての "シングルレベル"のURLがコントローラへのルート/ユーザーの検索を実行してユーザープロファイルをレンダリングするアクション)、しかしそれはかなり疑わしいURLスキーム。あなたの提案されたスキームははるかに良いです。 –