2011-08-01 11 views
0

Zend Frameworkを使用して開発しているアプリケーションの1つに、website.com/usernameからアクセスする必要があるユーザーのプロフィールページと、website/controller_name /action_nameからアクセスする必要があるZend FrameworkのWebサイト/ユーザー名

これはどのように達成できるのかよくわかりませんが、.htaccessファイルのいくつかの調整を行うことでこれを行うことができます。

誰かが私を助けてくれますか?前に示唆したようにしますZend_Controller_Router_Routeの使用方法については、こちらのリンクhttp://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard.variable-requirements

+0

私はあなたがすることができる最高のはwebsite.com/user/usernameだろうと思います。私はあなたが単にwebsite.com/usernameを持つことはできないと思う。 – Marcin

+0

@Marcin:まあ、OPはおそらく彼が示唆しているように(すべての "シングルレベル"のURLがコントローラへのルート/ユーザーの検索を実行してユーザープロファイルをレンダリングするアクション)、しかしそれはかなり疑わしいURLスキーム。あなたの提案されたスキームははるかに良いです。 –

答えて

-1

多くのおかげで、あなたはそのルートになる単一レベルの要求カスタムルートを使用することができます。ただし、これはデフォルトルートを上書きします。モジュールを使用している場合、これはもう動作しません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); 
      } 

     } 

    } 
} 
2

を見てどのような事前

+0

HI brady.vitrano このカスタムプラグインの方法と場所は教えてください。 また、私はモジュールベースのアプリケーションを使用しています。 ありがとうございました – user845990

+0

ここにはプラグインの登録に関するSOの質問があります。 http://stackoverflow.com/questions/938930/zend-framework-1-8-recommended-way-to-register-a-plugin –