参数中的Laravel路由空间返回404

时间:2012-11-27 14:53:18

标签: php routing controllers laravel

我的控制器(主页)中有以下操作

public function action_test($keyword)
{
    echo $keyword;
}

当我传递没有空格的参数时,它可以正常工作,如下所示

http://localhost/laravel/home/test/apple

但是当我使用空格传递参数时,它会产生404错误,如下所示

http://localhost/laravel/home/test/green apple

当空间被编码时它甚至不起作用

http://localhost/shop/public/home/test/green+apple

甚至不是这个

http://localhost/shop/public/home/test/green%20apple

任何人都可以帮助我

3 个答案:

答案 0 :(得分:2)

使用(:all)而不是(:any)注册您的路线。

来自Laravel文档:

  • (:any):允许URI段为任何字母数字字符串
  • (:all):无限制地捕获剩余的URI

您的路线可能如下所示:

Route::get('home/test/(:all?)', 'home@test');

Laravel论坛here中有关该主题的更多信息。

答案 1 :(得分:1)

我不知道这种行为背后的想法,但是(:any),(:number)和(:any?)不会带空格的字符串。如果您想将字符串传递给路线,则应使用(:all)。

答案 2 :(得分:-1)

http://www.laravel.com/docs/routing#controller-routing 您必须注册控制器的路线,例如: 路线::控制器( '家'); 并检查您的控制器类名是Home_Controller,还扩展Controller或Base_Controller类。