2013-01-24 21 views
8

stavo aggiornando il mio laravel 3 app per laravel 4 quando ho colpito questo problema ...percorso al controllore in sottocartella non funziona in laravel 4

Routes che ho provato:

Route::get('backend/login', 'backend/[email protected]'); 
Route::get('backend/login', '[email protected]'); 
+0

hai aggiornato il tuo file autoload? (compositore dump-autoload) –

+0

Sì, il file di caricamento automatico è stato aggiornato ma non risolve il problema. –

+0

Hai appena ricevuto un 404 o ottieni un errore più utile? Se riscontri un errore, puoi postarlo qui? –

risposta

4

Al momento , in Laravel 4 Beta 1, puoi "solo"? usa lo spazio dei nomi.

Per exemple qui nel file di controllo: app/controllers/backend/UserController.php

<?php namespace Controllers\Backend; 

use Illuminate\Routing\Controllers\Controller; 

class UserController extends Controller { 

    // Note extends Controller and not BaseController 

    // Your stuff 
} 
?> 

Così, dopo, nel file: app/routes.php:

<?php 
Route::get('backend/login', 'Controllers\Backend\[email protected]'); 

I don' so se è il modo migliore, ma lavorare qui. Modifica & dump-autoload "composit.json" sembra non funzionare realmente.

Se qualcuno può migliorarlo, farà la mia giornata! :)

+0

Ancora non funziona: Percorso: Route :: get ('backend/login', 'Controller \ Backend \ UserController @ login'); Classe (in app/controller/backend/UserController.php):

+0

ok, come ho detto, prendersi cura di: ' "classe UserController estende Controller"' non '"class UserController estende BaseController "' –

+0

Quindi ho lo stesso errore. –

-1

Si potrebbe anche mettere il vostro pannello di backend/admin in un package..fruit per il pensiero :)

+0

Puoi spiegare in dettaglio perché questo dovrebbe risolvere il problema? – Trinimon

6

Ho avuto un problema simile solo poche ore fa e ho dovuto giocare un po 'con esso per farlo funzionare.

Rotte:

Route::group(array('prefix' => 'admin'), function() { 
    Route::resource('/', 'admin\DashboardController'); 
}); 

In "controllori/admin" Ho messo la DashboardController:

namespace admin; 

use Illuminate\Support\Facades\View; 

class DashboardController extends \BaseController { 

    public function index() 
    { 
     return View::make('admin/dashboard'); 
    } 

} 

Che ha fatto il trucco sul laravel 4. spero vi sia abbastanza utile. :)

+0

È molto utile. Tu salvi la giornata. – akbarbin

0

mio controller Admin nella cartella app/controller

class AdminController extends BaseController { 
/**. 
* @return \AdminController 
*/ 
    public function __construct() 
    { 

    } 
} 

Ora ho una cartella denominata admin in controllori cartella cioè app/controllers/admin e ho un altro controller non nominati AdminDashboardController.php

class AdminDashboardController extends AdminController { 

/** 
* Display a listing of the resource. 
* 
* @return Response 
*/ 
    public function getIndex() 
    { 
    return View::make('admin/dashboard'); 
    } 
    } 

E infine il mio Route.php il file

Route::group(array('prefix' => 'admin'), function() 
{ 
    # Admin Dashboard 
    Route::controller('/', 'AdminDashboardController'); 
}); 

Spero che questo aiuta .. :-)

2

Se siete gonna uso laravel 4, forse si dovrebbe dare un'occhiata di questo: è possibile specificare lo spazio dei nomi per essere utilizzato su un gruppo di rotte, come potete vedere qui: http://www.laravel-tricks.com/tricks/route-group-namespacing

Quindi nel tuo campione :

Route::group(array('prefix' => 'backend', 'namespace' => 'backend'), function() 
{ 

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

}); 

funziona come un fascino :)

ho usato, e sono abbastanza buoni, aiuta a mantenere il vostro codice di pulito e più comprensibile. Provaci!