2015-06-01 4 views
0

У меня возникли проблемы с маршрутизацией с контроллерами в подпапках. Я пробовал решение, предложенное в Laravel Controller Subfolder routing, но я не могу заставить его работать.Маршрутизация подпапки в laravel 5

структура папок

HTTP 
    Controllers 
     Admin 
     AdminControllers 
     User 
     UserControllers 
     BaseController 

Admincontrollers определены в 'App \ HTTP \ Контроллеры \ Администрирование' имен

Маршруты подать

Route::group(['middleware'=> 'admin','prefix' => 'admin'], function() { 
    Route::get('home', '[email protected]'); 
    Route::get('home', 'Admin\[email protected]'); 
    Route::resource('events', 'AdminEventController'); 
    Route::resource('events', 'Admin\AdminEventController'); 
    Route::get('myevents', '[email protected]'); 
    Route::get('myevents', 'Admin\[email protected]'); 
    Route::resource('groups', 'AdminGroupController'); 
    Route::resource('users', 'AdminUserController'); 
}); 

Это кажется странным, но это единственный способ сохранить его работу прямо сейчас. Если удалить

Route::get('myevents', 'Admin\[email protected]'); 
    //errormessage Class App\Http\Controllers\AdminEventController does not exist 

Если удалить

Route::get('myevents', '[email protected]'); 
//errormessage Action App\Http\Controllers\[email protected] not defined. 

Если я ставлю контроллеры в пространстве имен контроллера (не админ один) я все еще получаю

//errormessage Class App\Http\Controllers\AdminEventController does not exist 

Когда только добавлен маршрут

Route::resource('events', 'AdminEventController'); 
+1

Вы пробовали полностью квалифицированное имя контроллера? например. 'Route :: get ('home', 'App \ Http \ Controllers \ Admin \ AdminHomeController @ index');' Я предполагаю, что Laravel (или, возможно, автозагрузчик композитора) пытается угадать, о чем вы говорите и получаете это неправильно. – Kryten

+0

Это не трюк, но новая ошибка дала мне идею, и теперь она исправлена – JorenV

ответ

0

Проблема были вызовы во взглядах:

изменение

<td>{!!Html::linkAction('[email protected]', $event->name, $event->slug)!!}</td> 

в

<td>{!!Html::linkAction('Admin\[email protected]', $event->name, $event->slug)!!}</td> 

фиксированной его.

Правильное решение Laravel 5 в Laravel Controller Subfolder routing. Проблема не в файле маршрутов или контроллерах.

0

Да Если ваше приложение больше похоже на это, имеет смысл структурировать контроллеры с подпапками. Но требуется немного больше усилий, чем просто перемещать файлы здесь и там. Позвольте мне объяснить структуру.

Например, мы хотим иметь приложение подкаталога/Http/Controllers/Admin, а затем внутри него у нас есть AdminController.php, это нормально.Что нам нужно сделать внутри самого файла:

Правильное пространство имен - указать внутреннюю папку:

namespace App\Http\Controllers\Admin; 

Использование контроллера - от вашего внутреннего пространства имен для Laravel не будет «понимать» расширяет контроллер, так что вы необходимо добавить следующее:

use App\Http\Controllers\Controller; 

маршруты - указать полный путь Это не будет работать больше:

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

Это правильный путь:

Route::get('admin', 'Admin\[email protected]'); 

И это все - теперь вы можете использовать ваш контроллер от вложенной папки.

Reference (испытано): http://laraveldaily.com/moving-controllers-to-sub-folders-in-a-correct-way/ By: Повилас Короп

Смежные вопросы