Php ZF2-控制器管理带有和不带参数的路由
我正在用zf2编写一个应用程序,我遇到了这个问题,我不知道如何实现 目前我有一个这样的路由器:Php ZF2-控制器管理带有和不带参数的路由,php,zend-framework2,Php,Zend Framework2,我正在用zf2编写一个应用程序,我遇到了这个问题,我不知道如何实现 目前我有一个这样的路由器: 'routes' => [ 'stock' => [ 'type' => 'regex', 'options' => [ 'regex' => '/stock(?<sku>\/.*)', 'defaults' => [
'routes' => [
'stock' => [
'type' => 'regex',
'options' => [
'regex' => '/stock(?<sku>\/.*)',
'defaults' => [
'controller' => MyController::class,
'action' => 'check',
],
'spec' => '/path%path%'
],
“路由”=>[
“股票”=>[
'type'=>'regex',
“选项”=>[
“regex'=>”/stock(?\/.*),
“默认设置”=>[
'controller'=>MyController::class,
“操作”=>“检查”,
],
'spec'=>'/path%path%'
],
因此,当我的url包含../stock/13567/2312时,参数会传递到checkAction函数中
但是,如果url仅为../stock/或../stock而未发送任何参数,我希望显示不同的内容。如何实现这一点
谢谢。只需增加正则表达式,将参数标记为可选,如:
只需扩充正则表达式,将参数标记为可选,如中所示:
如果要根据传递的
sku
参数显示不同的内容,可以在控制器中执行以下操作:
public function indexAction()
{
// Return sku parameter if exists, false otherwise
$sku = $this->params('sku', false);
if ($sku) {
// For example get single item
...
$view->setTemplate('template-a');
} else {
// Get all items
...
$view->setTemplate('template-b');
}
return $view;
}
如果要根据传递的
sku
参数显示不同的内容,可以在控制器中执行以下操作:
public function indexAction()
{
// Return sku parameter if exists, false otherwise
$sku = $this->params('sku', false);
if ($sku) {
// For example get single item
...
$view->setTemplate('template-a');
} else {
// Get all items
...
$view->setTemplate('template-b');
}
return $view;
}
public function indexAction()
{
// Return sku parameter if exists, false otherwise
$sku = $this->params('sku', false);
if ($sku) {
// For example get single item
...
$view->setTemplate('template-a');
} else {
// Get all items
...
$view->setTemplate('template-b');
}
return $view;
}