1

我在为我的 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',
                ),
            ),
        ),
    ),
),

如果我必须通过编码参数,那么它不会是世界末日,尽管我不希望这样做。

使用参数编码:

http://localhost/url/http:%2F%2Fwww.google.co.uk
4

1 回答 1

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()

您的行为究竟发生在哪里,您确定不只是浏览器为了查看目的而对 url 进行解码?Chrome 喜欢做这种事情^^

于 2013-02-08T07:48:29.980 回答