Zend Frameworkのルーティングの微妙さ

タスクは、 example.com /user/ usernameおよびユーザーサブドメインusername.example.comを介してユーザープロファイルにアクセスできるようにすることです。 タスクは簡単で、Zend Frameworkの助けを借りて、数行のコードを解決します。 パスワードを登録、登録、復元し、実際にログイン/ログアウトし、ユーザープロファイルを表示するのと同じコントローラーに入れようと決めたとき、困難が始まりました。 ここでのタスクは、コントローラーがユーザーとしてexample.com/user/registerを認識しないようにすることでした。



ドキュメントに従って、ルーターを定義するときに、3番目のパラメーターを、正規表現の形式でルートに定義された変数の要件に設定できます。

この問題を解決するには、正規表現"/^(?!register$|confirm$|recover$|login$|logout$).+$/"を指定する必要があります。行の登録、確認、回復、ログイン、ログアウトを行ってから、次の行を完了します」(私は常に規則性をシャーマニズムと考えていました)。 しかし、ZFはすでに私たちのことを心配していて、フレーミングキャラクター、および行の最初と最後のキャラクターを配置しました。



そこで、UserControllerを用意しましょう。 このコントローラーには、ユーザープロファイルの操作に使用されるIndexActionアクションと、ルーティングを無視して実行する必要があるアクションが含まれています。 最終コード:





$routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  1. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  2. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  3. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  4. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  5. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  6. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  7. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  8. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  9. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  10. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  11. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  12. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  13. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  14. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  15. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  16. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  17. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  18. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



  19. $routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .



$routeUri = new Zend_Controller_Router_Route( 'user/:username' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!register$|confirm$|recover$|login$|logout$).+' ) ); $router->addRoute( 'useruri' , $routeUri); $hostnameRoute = new Zend_Controller_Router_Route_Hostname( ':username.example.com' , array( 'controller' => 'user' , 'action' => 'index' ), array( 'username' => '(?!www$|register$|confirm$|recover$|login$|logout$).+' ) ); $plainPathRoute = new Zend_Controller_Router_Route_Static( '' ); $router->addRoute( 'userdomain' , $hostnameRoute->chain($plainPathRoute); * This source code was highlighted with Source Code Highlighter .







これで、リンクexample.com/user/registerをクリックすると、サイトはユーザープロファイルの登録を検索およびロードしようとしません



ところで、オフラインマニュアルのアーカイブで、HtmlHelpから2つのファイルを見つけました。おかげで、ZFを便利な* .chm形式で管理できるようになりました。 唯一の微妙な点は、htmlhelpコンパイラが、HTMLエンティティの形式でのロシア語の文字列のひどい表現に対応していないことです。 :)。 しかし、この問題は基本的なスクリプトによって解決されます。







  1. $ text = file_get_contents'toc.hhc' );
  2. $ dc =配列();
  3. $ ch =配列();
  4. for ($ i = 1040; $ i <= 1103; $ i ++)
  5. {
  6. $ dc [] = '&#' 。 $ i。 「;」 ;
  7. $ ch [] = chr($ i-848);
  8. }
  9. $ text = str_replace($ dc、$ ch、$ text);
  10. $ h = fopen( '_toc.hhc''w +' );
  11. fputs($ h、$ text);
  12. fclose($ h);
*このソースコードは、 ソースコードハイライターで強調表示されました。




良いルーティングとコンパイル:)



All Articles