Я обновлял приложение 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 в пакет. Плод для размышления 🙂