1

現在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つは完全に間違っている)をどのように組み立てることができますか?現時点では、ブートストラップにも設定にもルートを追加していません。

4

1 に答える 1