Php $this->;url仅返回模块路径

Php $this->;url仅返回模块路径,php,zend-framework2,Php,Zend Framework2,我正在使用Zend Framework 2.2.4创建一个mvc应用程序 我有一个名为drinkmanAGment的模块,其中有一个名为DrinkController的控制器和一个名为drinkQueryAction的操作 从名为addinventory的视图phtml中,我试图将url添加到表单操作属性中 我正在使用以下代码: $drink_query_form->setAttribute('action', $this->url('drink', array('action' =

我正在使用Zend Framework 2.2.4创建一个mvc应用程序

我有一个名为
drinkmanAGment
的模块,其中有一个名为
DrinkController
的控制器和一个名为
drinkQueryAction
的操作

从名为
addinventory
的视图phtml中,我试图将url添加到表单操作属性中

我正在使用以下代码:

$drink_query_form->setAttribute('action', $this->url('drink', array('action' => 'drink-query')));
$this->url
命令的输出仅返回作为模块路径的
/drink management
。但它不会返回
/drink management/drink/drink query

我错过了什么

谢谢

更新 好的,这可能与我的路线配置有关,但我不知道如何修复它

'router' => array(
    'routes' => array(
        'drink' => array(
            'type'    => 'Literal',
            'options' => array(
                // Change this to something specific to your module
                'route'    => '/drink-management',
                'defaults' => array(
                    // Change this value to reflect the namespace in which
                    // the controllers for your module are found
                    '__NAMESPACE__' => 'DrinkManagement\Controller',
                    'controller'    => 'Drink',
                    'action'        => 'add-drink',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                // This route is a sane default when developing a module;
                // as you solidify the routes for your module, however,
                // you may want to remove it and replace it with more
                // specific routes.
                'default' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/[:controller[/:action]]',
                        'constraints' => array(
                            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                        ),
                    ),
                ),
            ),
        ),
    ),
),

您应该首先了解路由是如何工作的。您有一个名为
drink
的“根”路径。此路由有一个名为
default
的子级。现在是喝一杯。这意味着,此路由中没有参数,它始终是一个静态url
/drink management

子路由
默认值
是一个段路由,您可以提供参数。因此,如果在视图辅助对象中使用子路由,则可以使用类似
array('controller'=>'foo')
的数组来分配参数

现在,重要的部分是您可以通过使用
/
及其父级来指向此子路由。因此可以通过
饮料/default
达到您的默认值

一个TL;博士:

$this->url('drink/default', array('action' => 'drink-query'));
对你的命名的评论:我建议你重新命名你的路线,这样它们才更有意义。在某种程度上,
喝酒
是你的路线,这很好。子路径
default
令人困惑,因为它通常不是默认路径,而只是饮料控制器的一个总括。将其合并到
饮料
路线中更有意义。然后,您有一个单独的路由,可以在其中指定操作(控制器保持不变):

现在,您有了一个饮料路线,您可以对其进行操作,它只会停留在饮料控制器上:

$this->url('drink'); // to /drink-management
或一项行动:

$this->url('drink', array('action' => 'query')); // to /drink-management/query

您应该首先了解路由是如何工作的。您有一个名为
drink
的“根”路径。此路由有一个名为
default
的子级。现在是喝一杯。这意味着,此路由中没有参数,它始终是一个静态url
/drink management

子路由
默认值
是一个段路由,您可以提供参数。因此,如果在视图辅助对象中使用子路由,则可以使用类似
array('controller'=>'foo')
的数组来分配参数

现在,重要的部分是您可以通过使用
/
及其父级来指向此子路由。因此可以通过
饮料/default
达到您的默认值

一个TL;博士:

$this->url('drink/default', array('action' => 'drink-query'));
对你的命名的评论:我建议你重新命名你的路线,这样它们才更有意义。在某种程度上,
喝酒
是你的路线,这很好。子路径
default
令人困惑,因为它通常不是默认路径,而只是饮料控制器的一个总括。将其合并到
饮料
路线中更有意义。然后,您有一个单独的路由,可以在其中指定操作(控制器保持不变):

现在,您有了一个饮料路线,您可以对其进行操作,它只会停留在饮料控制器上:

$this->url('drink'); // to /drink-management
或一项行动:

$this->url('drink', array('action' => 'query')); // to /drink-management/query

路线饮料的定义是什么?更新了路线配置的主柱路线饮料的定义是什么?更新了路线配置的主柱路线