2013-01-24 4 views
8

ich meine Laravel 3 App Laravel 4 aktualisieren, wenn ich dieses Problem getroffen ...Strecke in Unterordner an die Steuerung nicht in Laravel Arbeits 4

Routes habe ich versucht:

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

haben Sie Ihre Autoload-Datei aktualisiert? (Composer dump-autoload) –

+0

Ja, die Autoload-Datei wurde aktualisiert, behebt das Problem jedoch nicht. –

+0

Erhalten Sie nur einen 404 oder erhalten Sie einen nützlicheren Fehler? Wenn Sie einen Fehler erhalten, können Sie ihn hier posten? –

Antwort

4

Im Moment In Laravel 4 Beta 1 kannst du "nur?" Namespace verwenden

Für exemple hier in dem Controller-Datei: 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 
} 
?> 

So nach, in der Datei: app/routes.php:

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

I don‘ Ich weiß, ob das der bessere Weg ist, aber hier zu arbeiten. Bearbeiten & dump-autoload "composer.json" scheint nicht wirklich funktionieren.

Wenn jemand das verbessern kann, wird er meinen Tag machen! :)

+0

Immer noch nicht funktioniert: Route: Route :: get ('Backend/Login', 'Controller \ Backend \ UserController @ Login'); Klasse (in app/controllern/backend/UserController.php):

+0

ok nicht vorhanden ist, wie ich sagen, kümmern sich um: ' "class Usercontroller erweitert Controller"' nicht ‚" class Usercontroller erweitert BaseController "' –

+0

Dann bekomme ich den gleichen Fehler. –

-1

Sie auch Ihre backend/Admin-Panel in einem package..fruit zum Nachdenken setzen könnte :)

+0

Können Sie im Detail erklären, warum dies das Problem beheben sollte? – Trinimon

6

Ich hatte vor ein paar Stunden ein ähnliches Problem und musste ein bisschen damit spielen, damit es funktionierte.

Routen:

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

In "controllers/admin" habe ich die DashboardController:

namespace admin; 

use Illuminate\Support\Facades\View; 

class DashboardController extends \BaseController { 

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

} 

, die den Trick tat auf Laravel 4. Hoffen Sie es nützlich genug finden. :)

+0

Es ist sehr hilfreich. Du sparst den Tag. – akbarbin

0

My Admin-Controller in app/controllers Verzeichnis

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

    } 
} 

Jetzt habe ich einen Ordner mit dem Namen admin in Controller-Ordner dh app/controllers/admin und ich habe einen anderen Controller dort genannt AdminDashboardController.php

class AdminDashboardController extends AdminController { 

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

Und schließlich Mein Route.php Datei

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

Hope diese .. hilft

2

Wenn Sie gonna verwenden Laravel 4, vielleicht sind, sollten Sie einen Blick von diesem zu nehmen: Sie können den Namespace angeben, um auf eine Gruppe von Routen verwendet werden, wie Sie hier sehen können: http://www.laravel-tricks.com/tricks/route-group-namespacing

So in Ihrer Probe :

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

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

}); 

es funktioniert wie ein Charme :)

ich es verwendet haben, und sind recht gut, es hilft Ihnen, Ihren Code sauberer und verständlich zu halten. Versuche es!