Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF2-控制器管理带有和不带参数的路由_Php_Zend Framework2 - Fatal编程技术网

Php ZF2-控制器管理带有和不带参数的路由

Php ZF2-控制器管理带有和不带参数的路由,php,zend-framework2,Php,Zend Framework2,我正在用zf2编写一个应用程序,我遇到了这个问题,我不知道如何实现 目前我有一个这样的路由器: 'routes' => [ 'stock' => [ 'type' => 'regex', 'options' => [ 'regex' => '/stock(?<sku>\/.*)', 'defaults' => [

我正在用zf2编写一个应用程序,我遇到了这个问题,我不知道如何实现

目前我有一个这样的路由器:

'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;
}