7. Контроллер управления категориями
05 Июня 2020 01:18 (Редактировано: 05 Июня 2020 02:35)
Важно отметить один момент: всегда нужно писать сначала контроллеры, потом маршруты.
Обновим файл маршрутов web.php
, приведем его к следующему виду:
<?php
//use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['namespace' => 'Blog', 'prefix' => 'blog'], function() {
Route::resource('posts', 'PostController')->names('blog.posts');
});
//Админка блога
$groupData = [
'namespace' => 'Blog\Admin',
'prefix' => 'admin/blog',
];
Route::group($groupData, function(){
//BlogCategory
$methods = ['index', 'edit', 'update', 'create', 'store'];
Route::resource('categories', 'CategoryController')
->only($methods)
->names('blog.admin.categories');
});
//Route::resource('rest', 'RestTestController')->names('restTest');
Примечание. В данном примере создание маршрутов рассматривается в ознакомительных целях. Это рабочий вариант, но не совсем корректный.
Смотрим список маршрутов по уже известной команде в терминале:
php artisan route:list
Мы получим ошибку т.к. контроллер CategoryController
не создан. Создаем его в директории admin:
php artisan make:controller Blog/Admin/CategoryController --resource
Далее смотрим опять маршруты - все в порядке!
Примечание. Для удобства, можно сохранять маршруты в файл
php artisan route:list > routes.txt
Базовый контроллер для админки
Создаем в директории Http/controllers/Blog/Admin
файл BaseController.php
и добавляем следующее содержимое:
<?php
namespace App\Http\Controllers\Blog\Admin;
use App\Http\Controllers\Blog\BaseController as GuestBaseController;
abstract class BaseController extends GuestBaseController
{
}
Это будет абстрактный класс для всех дальнейших контроллеров админки.
Доабвляем в файл CategoryController.php
в метод, например, edit
строку с dd(__METHOD__);
и пробуем зайти в проект по адресу project.loc/admin/blog/categories/1/edit
.