例如,我想获取此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
);
是否可以创建此路线?
答案 0 :(得分:2)
如果它可以工作,那就是使用班级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
));
答案 1 :(得分: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());