2013-01-18 6 views
8

Sto usando il framework PHP di Laravel e mi sto chiedendo alcune cose. Il file predefinito application/routes.php contiene questo:Come impostare il controller di default in Laravel?

Route::get('/', function() 
{ 
    return View::make('home.index'); 
}); 

Emette solo la vista, ma come faccio a chiamare un controller da lì?

Posso cancellare l'intero percorso sopra e sostituirlo con Route::controller('home') che sembra utilizzare il controller di casa sull'URL predefinito (ad esempio example.com/). Ma qualsiasi altro controller come Route::controller('article') non funziona, solo su example.com/article. Come impostare il controller dell'articolo come predefinito?

risposta

12

Basta passare il controller come una stringa, con @ tra il nome della classe e il nome del metodo:

Route::get('/', '[email protected]'); 

the docs Read (scorrere fino alla esempio il titolo Registrazione di un percorso che punta a un azione di controllo).

+0

Grazie, in qualche modo ho perso quella parte della pagina. Che dire della cosa 'home' però? 'Route :: get ('/', 'home @ index')' come 'Route :: controller ('home')'? – DisgruntledGoat

+0

@DisgruntledGoat - No. 'Route :: get ('/', 'home @ index')' registrerà solo il metodo index e solo sulla rotta '/'. 'Route :: controller ('home')' registrerà tutti i suoi metodi, mappati ai loro rispettivi URL. –

+0

Come funzionerebbe il secondo? Se si registra un intero controller su '/', allora '/ example' diventa ambiguo, tra un controller chiamato 'esempio' contro un metodo 'esempio' sul controller di casa. – DisgruntledGoat

2

"/" è una posizione speciale ed è possibile impostarlo tramite .

Per tutte le altre azioni sui controller di casa si avrà gli URL tale ha "/home/action1" o "/home/action2".

Sto solo cercando di farti capire che non c'è alcun vantaggio e la necessità di assegnare qualsiasi controller a "/".

Spero di essere chiaro con la mia risposta. Ancora una volta questa non è una risposta alla tua domanda, ma un suggerimento per te se sei bloccato con la gestione della rotta. Ero allo stesso stadio in cui sei qualche giorno fa :)

+2

Questo è un vecchio post ma è uno dei migliori in Google, quindi sto commentando per questo motivo. Se qualcuno lo trova, quando si imposta un Route :: controller ('/', 'Controller') si interrompono tutti gli altri collegamenti, motivo per cui non è una buona idea usare il default '/' per una route del controller –