ZendFramework2のルーティング

ZendFramework2のお勉強をはじめたのであるが、標準ルーティング+URIへのパラメータ追加で、アクセス可能&表示可能までは確認できた。

次は、ZendFramework1でやっていた、URIのカスタマイズである。

とりあえず、こちらが今動かしている、ZendFramework1で作成して運用している?1ページになるのであるが、actionを省略している。標準のindexになるのであるが、省略するようにパラメータ指定するルーティング指定で指定した。

しかし、ZendFramework2での指定の方法がわからない。書式というか設定ファイルというか、がらりと変わってしまったのが原因なのであるが、同じページは同じようにアクセスしたい。

英語で、「ZendFramework without action」などと検索して、Stackoverflowにいくつか例がでていたのであるが、どれもうまく行かない。ビューでの切替だったり、アクションでの切替をカスタマイズしている例だったり。

結局公式マニュアルのルーティングのページの「A complex example with child routes」が一番役に立った。

最初はそのまま使ったのであるが、簡略化をしていって、自分なりに変更して、最終的に、次のコードになった。


'count' => array(
  'type' => 'literal',
  'options' => array(
    'route' => '/count',
    'defaults' => array(
      'controller' => 'Application\Controller\Count',
      //'action' => 'index',
    ),
  ),
  'may_terminate' => true,
  'child_routes' => array(
    'cound-id' => array(
      'type' => 'Segment',
      'options' => array(
        'route' => '/[:id]',
        'constraints' => array(
          'id' => '[a-zA-Z][a-zA-Z0-9_-]*',
        ),
      'defaults' => array(
        'action' => 'index',
      ),
    ),
  ),
),

2015/3/21 0:15更新(最初に書いたルーティングではその後動作しなかったので修正)

これで、上記、ZendFramework1で作ったサイトと同じURLでのアクセスが可能になった。

今後、他のコントローラを追加したり、サイト全体として調整をしていった時にどうなっていくのかは現時点では不明であるが、とりあえず、問題が一つ解決した。

コメント