Zend Framework 2 从路由中获取 URL
Zend Framework 2 getting URL from route
我想做的是使用 url view helper in Zend Framework 2
生成一个 URL
我尝试生成的 URL 应该是
my-website.com/app/##(其中 ## 等于 "ownerID")
当我像这样使用视图助手生成它时会发生什么:
$this->url('mymodule', array('action'=>'show', 'ownerID'=>'28'));
是否只生成 "my-website.com/app",但我希望根据路由配置生成 "my-website.com/app/28"。
这是我的 module.config.php 文件中的路线信息
'router' => array(
'routes' => array(
'mymodule' => array(
'type' => 'segment',
'options' => array(
'route' => '/app',
'defaults' => array(
'controller' => 'MyModule\Controller\MyModule',
'action' => 'show',
),
),
// Defines that "/app" can be matched on its own without a child route being matched
'may_terminate' => true,
'child_routes' => array(
'archive' => array(
'type' => 'segment',
'options' => array(
'route' => '/:action[/:ownerID[/:clientID]]',
'defaults' => array(
),
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'ownerID' => '[0-9]+',
'clientID' => '[0-9]+',
)
),
),
'single' => array(
'type' => 'segment',
'options' => array(
'route' => '/:ownerID[/:clientID]',
'defaults' => array(
'action' => 'show',
),
'constraints' => array(
'ownerID' => '[0-9]+',
'clientID' => '[0-9]+',
)
),
),
)
),
)
),
使用 $this->redirect()->toRoute 时会发生相同的行为。
当您手动输入时,所有路由都按预期工作,只是 URL 的生成让我感到难过。
为了更直接地回答这个问题,它并没有按照您的预期进行,因为您只是将顶级路由名称 ("mymodule") 传递给 URL 助手。 ownerID 是子路由的一部分。
你真正想要的是:
$this->url('mymodule/archive', array('action'=>'show', 'ownerID'=>'28'));
(或可能 mymodule/single
,取决于您想要的输出)。
我想做的是使用 url view helper in Zend Framework 2
生成一个 URL我尝试生成的 URL 应该是 my-website.com/app/##(其中 ## 等于 "ownerID")
当我像这样使用视图助手生成它时会发生什么:
$this->url('mymodule', array('action'=>'show', 'ownerID'=>'28'));
是否只生成 "my-website.com/app",但我希望根据路由配置生成 "my-website.com/app/28"。
这是我的 module.config.php 文件中的路线信息
'router' => array(
'routes' => array(
'mymodule' => array(
'type' => 'segment',
'options' => array(
'route' => '/app',
'defaults' => array(
'controller' => 'MyModule\Controller\MyModule',
'action' => 'show',
),
),
// Defines that "/app" can be matched on its own without a child route being matched
'may_terminate' => true,
'child_routes' => array(
'archive' => array(
'type' => 'segment',
'options' => array(
'route' => '/:action[/:ownerID[/:clientID]]',
'defaults' => array(
),
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'ownerID' => '[0-9]+',
'clientID' => '[0-9]+',
)
),
),
'single' => array(
'type' => 'segment',
'options' => array(
'route' => '/:ownerID[/:clientID]',
'defaults' => array(
'action' => 'show',
),
'constraints' => array(
'ownerID' => '[0-9]+',
'clientID' => '[0-9]+',
)
),
),
)
),
)
),
使用 $this->redirect()->toRoute 时会发生相同的行为。
当您手动输入时,所有路由都按预期工作,只是 URL 的生成让我感到难过。
为了更直接地回答这个问题,它并没有按照您的预期进行,因为您只是将顶级路由名称 ("mymodule") 传递给 URL 助手。 ownerID 是子路由的一部分。
你真正想要的是:
$this->url('mymodule/archive', array('action'=>'show', 'ownerID'=>'28'));
(或可能 mymodule/single
,取决于您想要的输出)。