How do I make a Catch-All Route in Laravel

∥☆過路亽.° 提交于 2019-12-18 01:34:19

问题


I need a laravel routes.php entry that will catch all traffic to a specific domain.com/premium-section of the site so that I can prompt people to become members before accessing the premium content.


回答1:


You could also catch 'all' by using a regex on the parameter.

Route::group(['prefix' => 'premium-section'], function () {
    // other routes
    ...
    Route::get('{any}', function ($any) {
        ...
    })->where('any', '.*');
});

Also can catch the whole group if no routes are defined with an optional param.

Route::get('{any?}', function ($any = null) {
    ...
})->where('any', '.*');

This last one would catch 'domain.com/premium-section' as well.




回答2:


This does the trick:

Route::any('/{any}', 'MyController@myMethod')->where('any', '.*');



回答3:


  1. In app/Http/routes.php I create a route that will catch all traffic within domain.com/premium-section/anywhere/they/try/to/go and attempt to find and execute a matching function within PremiumSectionController
  2. But there aren't any matching methods, just a catch-all.

    Route::group(['as' => 'premium-section::',
                  'prefix' => 'premium-section',
                  'middleware' => ['web']],
                  function(){
                     Route::any('', 'PremiumSectionController@premiumContentIndex');
                     Route::controller('/', 'PremiumSectionController');
    
                  });
    

.

    namespace App\Http\Controllers;

    use ...

    class PremiumSectionController extends Controller{

        public function premiumContentIndex(){
           return 'no extra parameters';
        }

        //magically gets called by laravel
        public function missingMethod($parameters = array()){
            return $parameters;
        }

    }


来源:https://stackoverflow.com/questions/34831175/how-do-i-make-a-catch-all-route-in-laravel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!