2016-09-07 3 views
4

У меня есть Laravel 5.2.45 приложение. У меня есть структура регулятора, как это:Определить маршрут Laravel 5 внутри подпапки и отобразить его через контроллер

App 
    Http 
     Controllers 
      Admin 
       AdminController.php 

внутри AdminController.php У меня есть

namespace App\Http\Controllers\Admin; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use App\Http\Requests; 

class AdminController extends Controller 
{ 

/** 
* Create a new controller instance. 
* 
* @return void 
*/ 
public function __construct() 
{ 
    $this->middleware('auth'); 
    $this->middleware('is.admin'); 
} 

public function index() 
{ 
    return view('admin.home'); 
} 

} 

У меня есть структура вида папок, как это:

views 
    admin 
     home.blade.php 

А внутри моего routes.php I имеют

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

Так что я пытаюсь получить это, когда я печатаю .../admin/home browser отображает home.blade.php внутри папки администратора.

Мой routes.php:

Route::auth(); 

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

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

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

Route::group(['prefix', 'admin', 'namespace' => 'Admin'], function() { 
    Route::get('home', '[email protected]'); 
}); 
+0

падение ведущий вперед слэш, так что становится: 'Route :: получить ('админ/дом', 'Admin \ AdminController @ индекс');' – Anas

ответ

1

Префикс отсутствует в поле Определение маршрута. Исправьте его выглядеть следующим образом:

<?php 
    Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() { 
     Route::get('/home', '[email protected]'); 
    }); 

Теперь попробуйте base_url/админ/дома, в вашем браузере, и он должен работать.

0

Вы должны отказаться от ведущей косую черту, так что становится:

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

+0

Это не решит проблему, Laravel обрезает от каких-либо дополнительных когда он регистрирует маршруты. –

+0

Да, это не работает. Такая же проблема, как раньше. Я уже пробовал каждую комбинацию./admin/home,/home, home, admin/home, admin.home ... – KondukterCRO

1

Вы можете использовать группы маршрутов с пространствами имен и префиксов вариантов.

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() { 
    Route::get('home', '[email protected]'); 
}); 

Здесь prefix позволяет указать начало URL, которые всегда должны быть в маршрутах внутри группы. Таким образом, любые маршруты, которые вы вводите внутри этой группы, должны начинаться с admin.

Пространство имен позволяет указать папку/пространство имен для контроллеров, с которыми вы ссылаетесь. Поэтому все контроллеры должны находиться в пространстве имен App\Http\Controllers\Admin и в папке app/Http/Controllers/Admin.

+0

Я просто сделал это, и я получил NotFoundHttpException в строке RouteCollection.php 161: Я набрал в браузере http: // localhost: 8888/project/public/admin/home Контроллеры и просмотр находятся в правильной папке, как я упоминал в вопросе Я пробовал с возвратом view admin.home, admin/home, home, но ничего не работает – KondukterCRO

+0

Можете ли вы разместить содержимое своего файла маршрутов? – Jonathon

+0

Мы пропустили ошибку - 'prefix' => 'admin' вместо 'prefix', 'admin' Но спасибо за большое предложение – KondukterCRO

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