Php Zend Framework 2路由中的编码参数
我在为我的ZF2项目设置路由参数时遇到问题。我希望能够将URL作为参数传递给页面,但每次尝试都会导致404 我已经创建了一个URL模块,并希望对其进行设置,以便以下控制器将URL作为id参数传入。控制器扩展了AbstractRestfulController类,因此下面的示例将使用get($id)方法 控制器地址:Php Zend Framework 2路由中的编码参数,php,zend-framework2,Php,Zend Framework2,我在为我的ZF2项目设置路由参数时遇到问题。我希望能够将URL作为参数传递给页面,但每次尝试都会导致404 我已经创建了一个URL模块,并希望对其进行设置,以便以下控制器将URL作为id参数传入。控制器扩展了AbstractRestfulController类,因此下面的示例将使用get($id)方法 控制器地址: http://localhost/url/ 使用参数: http://localhost/url/http://www.google.co.uk my module.config
http://localhost/url/
使用参数:
http://localhost/url/http://www.google.co.uk
my module.config.php的路由器部分如下所示:
'router' => array(
'routes' => array(
'url' => array(
'type' => 'segment',
'options' => array(
'route' => '/url[/][:id]',
'defaults' => array(
'controller' => 'URL\Controller\URL',
),
),
),
),
),
如果我必须传递encode参数,那么它就不会是世界末日,尽管我不希望这样
使用参数编码:
http://localhost/url/http:%2F%2Fwww.google.co.uk
这并不是直接针对你的问题,但我建议你稍微调整一下路线!目前,您的路线将匹配太多,即使是:
http://localhost/url1
我认为你不想处理这个问题,我的建议是:
'type' => 'segment',
'options' => array(
'route' => '/url[/[:id]]',
'defaults' => array(
'controller' => 'URL\Controller\URL',
),
'constraints' => array(
'id' => '<InsertURLRegexHere>'
)
)
“类型”=>“段”,
“选项”=>数组(
“路由”=>“/url[/[:id]]”,
“默认值”=>数组(
'controller'=>'URL\controller\URL',
),
'约束'=>数组(
'id'=>'
)
)
与您的问题更相关的是:ViewHelpers会自动对重要字符进行URL编码,如中所示,encode()
在buildPath()中使用
您的行为具体发生在哪里?您是否确定不仅仅是浏览器为了查看而解码url?Chrome喜欢做这种事情^ ^谢谢Sam。我现在添加了以下约束:'constraints'=>array('id'=>'(https?:\/\/)?([\da-zA-Z\.-]+)\([a-zA-Z\.]{2,6})([\/\w\.-]*)*/'),它正在工作!我现在可以作为URL的一部分传递。非常感谢。