Создание маршрутизации и первого контроллера (Урок 4)

В этом уроке мы рассмотрим пример маршрутизации в Ларавел. Сначала мы просто потренируемся, сделаем тестовый контроллер и тестовый маршрут к нему. Создайте наш тестовый контроллер, используя в консоли команду:

php artisan make:controller RestTestController --resource

Обратите внимание, что в команде есть ключ --resource это означает, что в нашем контроллере уже будут готовые REST функции. Я надеюсь, что вы знакомы с технологией REST, если же нет, то советую ознакомиться. В папке \app\Http\Controllers по умолчанию находятся контроллеры, которые вы создаете. Перейдите в эту папку и вы увидите RestTestController, который вы создали.

Тут вы увидите различные методы, разберемся по каждому, для чего они нужны:
Функция index() - вывод списка, к примеру если у нас это контроллер наших постов, то он выводит список постов
Функция create() - создание новой сущности, например нашей статьи, т.е. страница на которой мы будем писать наши статьи
Функция store() - сохраниние нашей сущности в бд, т.е. после того как мы написали нашу статью, нажимаем кнопку сохранить и вызывается функция store
Функция show($id) - показ сущности по id Функция edit($id) - создание страницы редактирования сущности Функция update($request, $id) - когда мы нажали кнопку сохранить на странице редактирования, мы должны попасть в функцию update Функция destroy($id) - удалить из базы данных

Создадим наш первый маршрут, откройте файл routes\web.php и добавьте туда такой код:

Route::resource('rest', 'RestTestController')->names('restTest');

Смотрите первое слово rest это наш путь к страничке, далее мы говорим, какой контроллер, в нашем случае это RestTestController и зададим имя этого маршрута restTest

Вернемся к нашему контроллеру, откройте файл \app\Http\Controllers\RestTestController.php и измените метод index следующим образом

public function index()
{
    return 1;
}

Теперь откройте браузер перейдите по страничке ваш_домен/rest и вы должны будете увидеть 1.

Настало время создать контроллеры и маршруты, которые действительно будут нужны нашему блогу. Выполните команды:

php artisan make:controller Blog/BaseController
php artisan make:controller Blog/PostController --resource

Сделаем наш класс BaseController абстрактным потому что от него мы будем только наследоваться, откройте файл \app\Http\Controllers\Blog\BaseController.php и измените его следующим образом:

<?php

namespace App\Http\Controllers\Blog;

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

abstract class BaseController extends Controller
{
    //
}

И изменим файл \app\Http\Controllers\Blog\PostController.php укажем, что он будет наследоваться от базового контроллера блога

Удалим в нем строчку

	use App\Http\Controllers\Controller;

Добавим строчку

	use App\Models\BlogPost;

И изменим строчку: class PostController extends Controller на это

	class PostController extends BaseController

В методе index() вставим следующий код:

public function index()
{
    $items = BlogPost::all();		
	return view('blog.posts.index',compact('items'));
}

Расскажу, что происходит в этом методе, строчка $items = BlogPost::all(); получает из базы данных наши посты

Строчка return view('blog.posts.index',compact('items')); передает эти данные в наш html шаблон, но вы наверное уже поняли, что шаблона для наших постов у нас пока нет, поэтому создадим его. Создайте файлик \resources\views\blog\posts\index.blade.php с таким содержимым:

<table>
	@foreach($items as $item)
		<tr>
			<td>{{$item->id}}</td>
			<td>{{$item->title}}</td>
			<td>{{$item->created_at}}</td>
		</tr>
	@endforeach	
</table>

Создадим теперь маршрут к нашим постам, для этого откройте файл routes\web.php и добавьте следующий код:

Route::group(['namespace' => 'Blog', 'prefix' => 'blog'], function(){
	Route::resource('posts', 'PostController')->names('blog.posts');
});

Теперь, если вы откроете в браузере страничку /blog/posts вы увидите список ваших записей.

Посмотреть список всех ваших маршрутов вы можете выполнив в консоли команду php artisan route:list и вы увидите список ваших маршрутов:

С маршрутами думаю все понятно, в следующем уроке мы сделаем страницы с авторизацией и регистрацией пользователя, а также поставим верстку из коробки.

Комменатрии
Сергей 25.05.2021 12:50:36
Ни слова не понятно
Ответить
Добавить комментарий