2013-01-24 70 views
8

我更新我的Laravel 3應用Laravel 4時,我打這個問題...路由到子控制器Laravel不工作4

路線我曾嘗試:

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

你有沒有更新你的自動加載文件? (composer dump-autoload) –

+0

是的,自動加載文件已更新,但不能解決問題。 –

+0

你剛剛得到404還是會得到更有用的錯誤?如果您遇到錯誤,您可以在此張貼嗎? –

回答

4

目前,在Laravel 4 Beta 1中,你可以「只有?」使用名稱空間。

對於爲例這裏在你的控制器文件:應用程序/控制器/後端/ UserController.php

<?php namespace Controllers\Backend; 

use Illuminate\Routing\Controllers\Controller; 

class UserController extends Controller { 

    // Note extends Controller and not BaseController 

    // Your stuff 
} 
?> 

所以後,在文件中:應用程序/ routes.php文件:

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

我不不知道是否更好的方法,但在這裏工作。編輯& dump-autoload「composer.json」似乎不起作用。

如果有人能改善這一點,他會讓我的一天! :)

+0

仍然不工作: Route:Route :: get('backend/login','Controllers \ Backend \ UserController @ login'); 類(在app/controllers/backend/UserController.php中):<?php namespace Controllers \ Backend; 使用Illuminate \ Routing \ Controllers \ Controller; 類UserController的擴展BaseController { 錯誤:ReflectionException:類控制器\後端\ UserController中不存在 –

+0

OK,就像我說的,照顧: ' 「類UserController的擴展控制器」' 不 「「類UserController中擴展BaseController「' –

+0

然後我得到同樣的錯誤。 –

-1

你也可以把你的後端/管理面板中package..fruit的想法:)

+0

你能詳細解釋爲什麼這應該解決這個問題嗎? – Trinimon

6

幾小時前我有類似的問題,不得不玩一點點才能使它工作。

路線:

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

在 「控制器/ admin」 的我把DashboardController:

namespace admin; 

use Illuminate\Support\Facades\View; 

class DashboardController extends \BaseController { 

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

} 

那做了Laravel 4招希望你覺得它有用不夠。 :)

+0

這非常有幫助。你節省了一天的時間。 – akbarbin

0

我在app/controllers目錄管理控制器

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

    } 
} 

現在我已經在控制器的文件夾,即應用程序/控制器/管理文件夾名爲admin,我有另一個控制器有一個名爲AdminDashboardController.php

class AdminDashboardController extends AdminController { 

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

,最後我Route.php文件

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

希望這幫助.. :-)

2

如果你是要去使用Laravel 4,也許你應該看看這個:您可以指定命名空間要在一組路由的使用,因爲你可以在這裏看到:http://www.laravel-tricks.com/tricks/route-group-namespacing

所以你的樣品中:

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

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

}); 

它的工作原理就像一個魅力:)

我一直用它了,而且是相當不錯的,它可以幫助你保持你的代碼更清潔和更容易理解。試一試!