0

コントローラー(自宅)で次のようなアクションがあります

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

誰かがこれで私を助けてくれますか

4

3 に答える 3

2

ルートを(:any)ではなく(:all)で登録します。

Laravelのドキュメントから:

  • (:any):URIセグメントを任意の英数字の文字列にすることができます
  • (:all):残りのURIを制限なくキャッチする

その場合、ルートは次のようになります。

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

Laravelフォーラムでそのトピックについて詳しくはこちらをご覧ください。

于 2012-12-29T10:10:43.587 に答える
1

この動作の背後にある考え方はわかりませんが、(:any)、(:num)、および(:any?)はスペースを含む文字列を取りません。ルートに文字列を渡したい場合は、(:all)を使用する必要があります。

于 2012-12-27T18:21:26.407 に答える
-1

http://www.laravel.com/docs/routing#controller-routing 次のように、コントローラーのルートを登録する必要があります。Route :: controller('home'); また、コントローラークラス名がHome_Controllerであることを確認し、ControllerまたはBase_Controllerクラスも拡張します。

于 2012-11-28T09:29:24.217 に答える