我在设置ZF2项目的路径参数时遇到问题。我希望能够将URL作为参数传递给页面,但每次尝试都会产生404.
我创建了一个URL模块,并希望对其进行设置,以便以下控制器将URL作为id参数传递。控制器扩展了AbstractRestfulController类,因此下面的示例将使用get($ id)方法。
控制器地址:
http://localhost/url/
使用参数:
http://localhost/url/http://www.google.co.uk
我的module.config.php的路由器部分如下所示:
'router' => array(
'routes' => array(
'url' => array(
'type' => 'segment',
'options' => array(
'route' => '/url[/][:id]',
'defaults' => array(
'controller' => 'URL\Controller\URL',
),
),
),
),
),
如果我必须传递编码参数,那么它不会是世界末日,虽然我不愿意。
使用param编码:
http://localhost/url/http:%2F%2Fwww.google.co.uk
答案 0 :(得分:2)
这并不是直接引用你的问题,但我建议你稍微改善你的路线!目前你的路线太多了,即使是这样:
http://localhost/url1
我不认为你想用这个,这是我的建议:
'type' => 'segment',
'options' => array(
'route' => '/url[/[:id]]',
'defaults' => array(
'controller' => 'URL\Controller\URL',
),
'constraints' => array(
'id' => '<InsertURLRegexHere>'
)
)
与您的问题更相关:ViewHelpers会自动对重要字符进行urlencode,如Zend\Mvc\Router\Http\Segment
中所示,encode()
内使用buildPath()
。
您的行为究竟发生在哪里,并且您确定不仅仅是为了查看目的而对网址进行解码的浏览器? Chrome喜欢做这件事^^