2013-02-14 10 views
5

Sto cercando di acquisire un carattere jolly dall'URL e quindi prima di passare a un filtro, quindi indirizzare al controller. Non sono sicuro di come tracciare la domanda esattamente, ma ecco cosa ho provato fino ad ora.Laravel, Routing Wildcard per filtrare e quindi controller

Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => '[email protected]', 'before' => "test_filter:$1")); 

Route::filter('test_filter', function($id = NULL) 
{ 
    if($id) 
    echo "This id is " . $id; // Prints "This id is $1" 
}); 

e

Route::get('test/(:any?)', array('as' => 'testroute', function($id = NULL) 
{ 
    if($id) 
     echo "this id is " . $id; // Does not do anything 
}, 'uses' => '[email protected]')); 

Fondamentalmente, voglio verificare se v'è un id aggiunto all'URL e impostare un cookie se ce n'è uno. Ma a prescindere dal caso, voglio che questa rotta sia gestita da un controller, non importa se è presente o meno un ID.

Devo fare la stessa cosa con così tanti percorsi quindi preferirei qualcosa come un filtro piuttosto che modificare i codici del controller.

So che posso passare direttamente l'elemento jolly a una chiusura oppure posso inviarlo come parametro a qualsiasi controller, ma in tal caso dovrò modificare i codici controller, che non posso momento.

Posso farlo attraverso i filtri? o in altro modo in cui non dovrò modificare i codici del controller?

risposta

0

Prova a passare un diritto anonimo dopo la prima

Route::get('test/(:any?)', 
    array(
     'as' => 'testroute', 
     'uses' => '[email protected]', 
     'before' => "test_filter", 
     function($my_cookie_value) 
     { 
      // Set cookie here 
     } 
    ) 
); 

Tratto da here

+0

@Gufran ho aggiornato il mio codice – afarazit

+0

No, la funzione anonima non fa nulla. Basta applicare il filtro e quindi inoltrare il percorso al controller. Inoltre, ho bisogno di prendere il valore di jolly all'interno del filtro o chiusura anonima. – Gufran

+0

@Gufran ha aggiornato di nuovo il codice, passando la corrispondenza alla funzione anon, vedere se funziona – afarazit

0

userei un middleware http://laravel.com/docs/5.1/middleware (o un filtro per le vecchie versioni laravel) e aggiungere il percorso/s in un gruppo che ha il middleware come puoi vedere qui http://laravel.com/docs/5.1/routing#route-group-middleware.

Il middleware verrà eseguito prima del codice di instradamento, in cui è possibile aggiungere una logica per gestire i cookie.

+0

Grazie. Molto apprezzato ma questa domanda ha 2,5 anni. Di solito mostra la data di pubblicazione sotto la domanda, quindi prova a controllare la data la prossima volta. – Gufran