Zendのフロントコントローラーでルーティング設定をした時の引数

2010年5月12日

ZendFrameworkを利用して、index.phpなどのフロントコントローラー上でルーティング設定をした際、

URL内の情報を引数としてコントローラーに渡したい場合がある。

例えば下記の例。

 


$router = $front->getRouter();
$route = new Zend_Controller_Router_Route(
':controller/:action/*',
array(
'module'    => 'default',
'controller'=> 'index',
'action'    => 'index',
));
$router->addRoute('default',$route);

//その他ページ出力
$route = new Zend_Controller_Router_Route_Regex(
'abebe/abebe.php',
array(
'module'    => 'default',
'controller'=> 'abebe',
'action'    => 'index',
) );
$router->addRoute('indexpage',$route);

 

 

このabebe.phpで

$val = $this->_getParam('var1');

というように引数を受け取りたい。

などなど。

その時は、フロントコントローラーのルーティング上で

 


$route = new Zend_Controller_Router_Route_Regex(
‘abebe/abebe.php?var1=(.*)’,
array(
‘module’ => ‘default’,
‘controller’=> ‘abebe’,
‘action’ => ‘index’,
),
array( 1 => ‘var1′ )
);
$router->addRoute(‘indexpage’,$route);

というように正規表現の情報をZend_Controller_Router_Route_Regexの第3引数にセットしてあげればよい。