1

例如,我想获取这个 url 字符串

/1/2/3/4

鉴于:

$this->url('routeName', array(
    'a' => array(1, 2, 3, 4)
));

在控制器中:

print_r($this->params()->fromRoute('a'));

输出是:

array(
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4
);

是否可以创建此路线?

4

2 回答 2

2

如果它可以工作,它将使用 class Zend\Mvc\Router\Http\WildCard。因为我从来没有让那个按照我期望的方式工作,我建议你采用 ZF2 方式,你可以完全控制你在做什么;)参数和配置的东西应该总是命名!我建议您创建一个简单的类型路线Zend\Mvc\Router\Http\Segment

'routename' => array(
    'type'    => 'Zend\Mvc\Router\Http\Segment',
    'options' => array(
        'route'    => '/:val1/:val2/:val3/:val4',
        'defaults' => array(
            'controller' => 'controllername',
            'action'     => 'actionname'
        ),
        'constraints' => array(
            'val1' => '[0-9]+',
            'val2' => '[0-9]+',
            'val3' => '[0-9]+',
            'val4' => '[0-9]+'
        )
    )
)

如果需求不同,显然路由配置会改变。您需要像这样设置路线:

$this->url('routename', array(
    'val1' => 1,
    'val2' => 2,
    'val3' => 3,
    'val4' => 4
));
于 2013-04-08T09:04:02.130 回答
1

在 module.config.php 文件中添加 url 路由,如下所示:

'routename' => array(
    'type'    => 'Zend\Mvc\Router\Http\Segment',
    'options' => array(
        'route'    => 'routename[/:val1][/:val2][/:val3][/:val4]',
        'defaults' => array(
            'controller' => 'controllername',
            'action'     => 'actionname'
        ),
        'constraints' => array(
            'val1' => '[0-9]+',
            'val2' => '[0-9]+',
            'val3' => '[0-9]+',
            'val4' => '[0-9]+'
        )
    )
)

然后按照以下步骤添加数字:

$this->url('routename', array(
    'val1' => 1,
    'val2' => 2,
    'val3' => 3,
    'val4' => 4
));

您可以通过以下方式获取所有参数:

print_r($this->params());
于 2013-04-08T09:16:26.533 回答