duanqie5741 2014-11-11 08:05
浏览 110
已采纳

如何在Laravel路由中使用可选值?

I have the following route:

Route::get('users/search/{type?}/{value}', 'Site\UserController@search');

The main idea is to simplify the search:

if type exists (name, surname, email and etc.) search only by that field.
if not - search everywhere.

But when I do:

http://example.com/users/search/sdgfdfxg 

Laravel throws

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException 

With

http://example.com/users/search/name/sdgfdfxg

or

http://example.com/users/search/surname/sdgfdfxg

everything is fine.

  • 写回答

3条回答 默认 最新

  • dongzhuandian3292 2014-11-11 08:14
    关注

    Yust define 2 routes:

    Route::get('users/search/{type}/{value}',function($type,$value){
        $app = app();
        $controller = $app->make('Site\UserController');
        $controller->callAction($app, $app['router'], 'search', $parameters = array($type,$value));
    });
    Route::get('users/search/{value}',function($value){
        $app = app();
        $controller = $app->make('Site\UserController');
        $controller->callAction($app, $app['router'], 'search', $parameters = array(null,$value));
    });
    

    But still the easiest option is to change the order of defining you're parameters. Set the optional option to the end of the url:

    Route::get('users/search/{value}/{type?}','Site\UserController@search');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!