Для реализации роутинга страниц, добавляемых через админку, в рамках Laravel, вам понадобится несколько шагов.
1. Создайте маршрут для админской части вашего приложения:
Route::prefix('admin')->group(function () { // Ваши маршруты для админской части });
Функция prefix('admin')
определяет, что все маршруты внутри группы будут начинаться с /admin
.
2. Создайте маршрут для обработки запросов на добавление страницы через админку:
Route::post('/admin/pages', 'PageController@store')->name('pages.store');
В данном случае, мы используем метод POST
и указываем, что запросы на URL /admin/pages
должны обрабатываться методом store()
класса PageController
. Также мы присваиваем этому маршруту имя pages.store
, чтобы иметь возможность ссылаться на него в дальнейшем.
3. В методе store()
класса PageController
реализуйте логику сохранения новой страницы:
public function store(Request $request) { // Валидация данных $validatedData = $request->validate([ 'title' => 'required', 'content' => 'required', ]); // Создание новой страницы $page = new Page; $page->title = $validatedData['title']; $page->content = $validatedData['content']; $page->save(); // Редирект на страницу со списком всех страниц return redirect()->route('pages.index'); }
Метод store()
принимает объект Request
, который содержит в себе данные, отправленные пользователем при добавлении новой страницы. В данном примере, мы выполняем валидацию данных с помощью метода validate()
. Если данные валидны, мы создаем новый объект Page
, присваиваем ему значения полей из запроса и сохраняем его в базу данных. Затем, мы делаем редирект на страницу со списком всех страниц при помощи метода redirect()->route('pages.index')
.
4. Соответственно, для отображения списка всех страниц, добавьте маршрут и метод в контроллер:
Route::get('/admin/pages', 'PageController@index')->name('pages.index'); public function index() { // Получение всех страниц $pages = Page::all(); // Возвращение представления с данными о страницах return view('admin.pages.index', compact('pages')); }
Маршрут /admin/pages
будет обрабатываться методом index()
класса PageController
, который получит все страницы из базы данных и передаст их в представление index.blade.php
в виде переменной $pages
.
Таким образом, вы создали роутинг для страниц, добавляемых через админку, который включает маршруты для добавления новой страницы и отображения списка всех страниц.