Я обновлял свое приложение Laravel 3 до Laravel 4, когда столкнулся с этой проблемой...
Маршруты, которые я пробовал:
Route::get('backend/login', 'backend/UserController@login');
Route::get('backend/login', 'backend.UserController@login');
Я обновлял свое приложение 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');
});
В "controllers/admin" я помещаю 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/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
}
?>
Итак, в файле: app/routes.php:
<?php
Route::get('backend/login', 'Controllers\Backend\UserController@login');
Я не знаю, лучше ли это, но работаю здесь. Редактирование и дамп-автозагрузка "composer.json" на самом деле не работают.
Если кто-то может улучшить это, он сделает мой день! :)
use Illuminate\View\Environment;
в свой контроллер и настроить функцию __construct()
- person Pierre Broucz; 25.01.2013
Если вы собираетесь использовать Laravel 4, возможно, вам следует взглянуть на это: вы можете указать пространство имен, которое будет использоваться в группе маршрутов, как вы можете видеть здесь: http://www.laravel-ricks.com/tricks/route-group-namespacing
Итак, в вашем образце:
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');
});
см. больше информации здесь
Мой контроллер администратора в каталоге app/controllers
class AdminController extends BaseController {
/**.
* @return \AdminController
*/
public function __construct()
{
}
}
Теперь у меня есть папка с именем admin в папке контроллеров, т.е. app/controllers/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-пространствоимен
Я использовал его, и он довольно хорош, он помогает вам сделать ваш код чище и понятнее. Попробуйте!
Вы также можете поместить свой бэкэнд/админ-панель в пакет... плод для размышлений :)