Маршрут к контроллеру в подпапке, не работающей в Laravel 4

Я обновлял приложение Laravel 3 до Laravel 4, когда я ударил эту проблему …

Маршруты, которые я пробовал:

Route::get('backend/login', 'backend/UserController@login'); Route::get('backend/login', 'backend.UserController@login'); 

У меня была аналогичная проблема всего несколько часов назад, и мне пришлось немного поиграть с ней, чтобы она работала.

Маршруты:

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

В «контроллерах / администраторах» я помещаю DashboardController:

 namespace admin; use Illuminate\Support\Facades\View; class DashboardController extends \BaseController { public function index() { return View::make('admin/dashboard'); } } 

Это сделало трюк на Laravel 4. Надеюсь, вы найдете его достаточно полезным. 🙂

На данный момент, в Laravel 4 Beta 1, вы можете «только»? используйте пространство имен.

Например, в вашем файле контроллера: app / controller / backend / UserController.php

 <?php namespace Controllers\Backend; use Illuminate\Routing\Controllers\Controller; class UserController extends Controller { // Note extends Controller and not BaseController // Your stuff } ?> 

Итак, в файле: app / routes.php:

 <?php Route::get('backend/login', 'Controllers\Backend\UserController@login'); 

Я не знаю, есть ли лучший способ, но работает здесь. Редактировать & dump-autoload «composer.json» похоже не работает.

Если кто-то может это улучшить, он сделает мой день! 🙂

Если вы собираетесь использовать Laravel 4, возможно, вам стоит взглянуть на это: вы можете указать пространство имен, которое будет использоваться в группе маршрутов, как вы можете видеть здесь: http://www.laravel-tricks.com/tricks / маршрутные группы Пространство имена

Итак, в вашем примере:

 Route::group(array('prefix' => 'backend', 'namespace' => 'backend'), function() { Route::get('login', 'UserController@login'); }); 

Отлично работает 🙂

Я использую его, и это неплохо, это помогает вам очищать код и более понятно. Попробуй!

Я рекомендую делать

 Route::group(array('prefix' => 'backend'), function() { // Responds to Request::root() . '/backend/user' Route::resource('login', 'UserController'); }); 

см. больше информации здесь

Laravel 4 вложенных контроллеров ресурсов Route :: resource ('admin / photo', 'PhotoController'); не работает

My Admin Controller в каталоге приложений / контроллеров

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

Теперь у меня есть папка с именем admin в папке контроллеров, т.е. app / controller / 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'); }); 

Надеюсь это поможет ..:-)

Как поясняется здесь, с Laravel 4.1 вы можете указать пространство имен, которое будет использоваться в группе маршрутов, как вы можете видеть здесь: http://www.laravel-tricks.com/tricks/route-group-namespacing

Я использую его, и это неплохо, это помогает вам очищать код и более понятно. Попробуй!

Вы также можете поместить свою панель backend / admin в пакет. Плод для размышления 🙂