Zend Frameworkワークショップ。 パート2:ルートとレジストリ







Zend Frameworkの実際の使用を引き続き確認します。 2番目の部分ではルーティングに焦点を当て、必要な任意の形式のURLを作成できるようにします。 また、システム定数への便利なアクセスを整理する例を検討します

ルーティング



ルーティングは非常に重要なトピックです。 ご存知のように、デフォルトでは、Zend Frameworkはurl-controller / action / param1 / value1 / param2 / value2の形式を使用します ルーティングツールのおかげで、プロジェクトで必要な形式のURLを整理できます。 たとえば、フォームのURL(site.com/static-page)から静的ページへの単純なアクセスを整理したり、フォーム(site.com/catalog/category/good-name)のリンクから製品へのアクセスを実装したりできます。 これは特にseoのニーズに役立ちますが、ユーザーがリンクを取得し、サイトのページの内容をすぐに理解するのにも役立ちます。

上記のリンク形式のルートを作成する例を考えてみましょう。 最初にルートを作成する必要があります。このため、bootstrap.phpファイルにメソッドを記述します。



public function _initRoute(){ //  , - $router = Zend_Controller_Front::getInstance()->getRouter(); //    //     $route_static = new Zend_Controller_Router_Route( '/:page', array( 'controller' => 'static', 'action' => 'index', 'page' => 'default-page-name' ), array( 'page' => '[\w\-]+' ) ); $router->addRoute('static', $route_static); //    $route_goods = new Zend_Controller_Router_Route( '/catalog/:category/:good/*', array( 'controller' => 'goods', 'action' => 'show' ), array( 'category' => '[\w\-]+', 'good' => '[\w\-]+' ) ); $router->addRoute('goods', $route_goods); }
      
      





まず、標準ルーターを取得し、それにカスタムルートを追加します。 この場合、書き換えルーターZend_Controller_Router_Routeを使用します。 最初のパラメーターは、URL形式を記述する文字列コンストラクターです。 「:変数」という形式の識別子は、動的部分を定義するために使用されます。 そのような動的な部分は、URLの特定のセクションから値が置換される変数と考えると便利です。 2番目のパラメーターは、標準ルーター値の配列を渡します。 この配列では、コントローラーの名前の値と、このルートに沿って要求を処理するアクションの値、および対応するurl値が欠落している場合に使用されるデフォルト変数の値を指定する必要があります。 変数の要件を設定することも便利です。 これを行うための3番目のパラメーターは、有効な変数値の形式を記述するパターンを渡すことです。 可能な限りこのオプションを指定することをお勧めします。 これはセキュリティ上の理由で便利です。 テンプレートが変数の値と一致しない場合、エラーがトリガーされ、アクションコードは潜在的に危険な値を受け取りません。

ルーターを作成したら、addRouteメソッドを使用して標準ルーターに追加する必要があります。 各ルートには一意の識別子文字列が必要です。この文字列は将来使用されます。

さらにアクションコードでは、変数の値を取得するために、次のコードを実行する必要があります。



 $page = $this->getRequest()->getParam('page');
      
      





このルーターを使用してリンクを作成する必要がある場合もあります。 これを行うには、標準のURLヘルパーを使用します。



 <a href="<?php $this->url(array('page'=>'about'), 'static'); ?>"> </a>
      
      





Zend Frameworkで使用されているルーターの1つだけを調べました。 詳細については、 こちらのドキュメントをご覧ください



登録



ここで、ZFでapplication.iniファイルのセクションから定数への便利で迅速なアクセスを整理する方法を見ていきます。 まず、いくつかの定数を設定しましょう。



[定数]

paths.photo = "/ photo /"

paths.uploads = "/ uploads /"

path.video = "/ video /"

secret_code = "key_for_check"



上記のコードは、application.iniファイルに配置する必要があります。 次に、レジストリパターンを実装するZend_Registryコンポーネントを使用して、プロジェクト全体で定数を使用できるようにします。



  public function _initConfig(){ Zend_Registry::set('constants', new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', 'constants') ); }
      
      





上記のメソッドをbootstrap.phpに追加する必要があります。 次に、定数にアクセスするには、次のコードを使用します。



 $path_photo = Zend_Registry::get('constants')->paths->photo;
      
      






All Articles