phplaravelroutes

How do I make a Catch-All Route in Laravel


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


Solution

    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;
            }
    
        }