現在ZF1.12.2を使用しており、URLアクションヘルパーを使用してフォームにアクション属性を設定していますが、アクションヘルパーは配列から文字列への変換を実行しています。私は以下に返されるものについてコメントしました:
<?php
// application/modules/user/controllers/SignupController.php
class User_SignupController extends Zend_Controller_Action
{
public function indexAction()
{
$form = new User_Form_Signup();
// This gives me 'user/signup/Array'
$signup_url = $this->_helper->url(array(
'module' => 'user',
'controller' => 'signup',
'action' => 'register'
));
// This gives me 'user/signup/register', which is what I want
$signup_view_url = $this->view->url(array(
'module' => 'user',
'controller' => 'signup',
'action' => 'register'
));
$form->setAction(...);
}
public function registerAction()
{
}
}
なぜこれが起こっているのか私は本当に理解していません。Zend_Controller_Action_Helper_UrlとZend_View_Helper_Urlの両方を調べましたが、それらのメソッドは似ています。
// get the front controller's router
$router = Zend_Controller_Front::getInstance()->getRouter();
// assemble the route
return $router->assemble($urlOptions, $name, $reset, $encode);
私は自分のニーズを解決する質問の途中を発見したばかりZend_Controller_Action_Helper_Url::simple
ですが、それでも私は混乱していて、上に返されるものについて興味があります。
同じ引数を使用して、同じオブジェクトのメソッドで2つの別々の呼び出しから、ルーターが2つの完全に異なるルート(1つは完全に間違っている)をどのように組み立てることができますか?現時点では、ブートストラップにも設定にもルートを追加していません。