我目前正在使用 ZF 1.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
可以解决我需求的中间问题,但我仍然对上面返回的内容感到困惑和好奇。
路由器如何使用相同的参数从对同一对象的方法的两个单独调用中组装两条完全不同的路由(一个完全错误)?到目前为止,我还没有在引导程序和配置中添加任何路由。