Почему эта книга? На самом деле, это не совсем книга. Это большепохоже на руководство – руководство, чтобы уберечь вас и других отпревращения в «зомби-разработчиков». Что такое «зомби-разработчик»? Эторазработчик, похожий на нас, который безраздельно занимается созданиемприложений на PHP, повторяя одни и те же задачи снова и снова. Этиповторяющиеся задачи могут быть утомительными и привести красплавлению мозга. Когда это происходит, разработчики повсюдупревращаются в безмозглых зомби, жаждущих крови и порывающихсяубивать.Однако есть лекарство: фреймворк Laravel, разработанный для быстройразработки приложений. Освоив Laravel, вы сможете заново открыть в себестрасть к кодингу и побороть "зомби". Это руководство призвано сохранитьваше здравомыслие, сделав кодинг снова приятным занятием. И да, этоможет спасти жизнь!Освоив основы Laravel, вы сможете уберечь себя и, возможно, другихот превращения в бездумного зомби-разработчика.
Приведённый ознакомительный фрагмент книги Laravel – гайд по выживанию предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других
2. Маршрутизация
Надежная система маршрутизации имеет решающее значение для выживания. Как опытный выживальщик находит верный путь к безопасности, так и мощная система маршрутизации гарантирует, что пользователь никогда не заблудится и всегда достигнет желаемого пункта назначения.
Чтобы убедиться в том, что все находятся на одной волне, давайте сначала разберемся, что такое маршрутизация приложений.
Маршрут можно представить себе, как подобие дороги. Например,"Мы ехали по дороге (маршруту), чтобы добраться до кладбища". Маршрут определяет, как вы добираетесь из одного места в другое. Когда вы набираете URL-адрес веб-сайта, например, site.com/graveyard, вы сообщаете браузеру, что кладбище — это маршрут, по которому вы хотите проехать. Затем приложение говорит:"Хорошо, вы хотите отправиться на"кладбище"? Вот вывод, который я получил для маршрута"graveyard".
Создание маршрута с помощью Laravel довольно простое:
<?php
Route::get('graveyard', function(){
echo 'Добро пожаловать на кладбище!';
});
Здесь создается маршрут для страницы"кладбище". Приложение, получив запрос на"get"маршрута"graveyard", выполнит функцию и выдаст сообщение"Добро пожаловать на кладбище!".
Наша маршрутизация в Laravel находится по адресу routes\web.php. Именно здесь мы будем добавлять все маршруты для нашего приложения.
В принципе, у нас есть четыре типа маршрутов: POST, GET, PUT и DELETE. Они выглядят следующим образом:
<?php
Route::post('/zombie', function () {
echo"We want to create a new zombie";
});
Route::get('/zombie', function () {
echo 'We want to read or view a zombie';
});
Route::put('/zombie', function () {
echo"We want to update an existing zombie";
});
Route::delete('/zombie', function () {
echo"We want to destroy a zombie";
});
Эти методы — POST, GET, PUT и DELETE — являются частью архитектуры RESTful, каждый из которых отражает определенное действие:
POST: Создание сущности (Create).
GET: Чтение сущности или нескольких сущностей (Read).
PUT: Обновить сущность (Update).
DELETE: удаление сущности (Delete).
Эта техника также называется CRUD (Create, Read, Update, Delete).
Чаще всего мы будем использовать метод GET, но есть также маршрут, который можно использовать для получения любого метода:
<?php
Route::any('/zombie', function () {
echo"Any request from this zombie route";
});
Отлично!
Итак, как мы инициируем наши маршруты из браузера? В большинстве случаев мы используем GET-запрос. Введя site.com/zombie, мы получаем функцию GET. Но как насчет передачи данных?
Легко! Для этого подойдет HTML-форма, подобная этой:
<form method="POST"action="/zombie">
@csrf
@method('PATCH')
…
<input type="submit">
</form>
При нажатии кнопки submit на этой форме данные будут отправлены на POST-маршрут site.com/zombie.
Обратите внимание на передачу @csrf и дополнительного указания метода. Указание метода необходимо из-за того, что в HTTP не существует метода ‘PATCH’. Таким образом мы даем понять Laravel, какое именно действие нужно совершить с данными из этой формы.
Пример быстрой маршрутизации
Представьте, что перед вами стоит задача убить (удалить) зомби-изгоя! Сначала необходимо создать форму:
<form method="POST"action="/zombie">
@csrf
@method(DELETE)
<input type="hidden"name="id"value="2">
<input type="submit"value="Destroy">
</form>
На ней отображается кнопка"Уничтожить". Для простоты мы жестко задали идентификатор 2, который, как правило, зависит от конкретного зомби.
Далее, давайте составим маршрут:
<?php
use Illuminate\Http\Request;
Route::delete('/zombie', function(Request $request){
$id = $request->id; Zombie::destroy($id);
});
И вот уже нет проблемного зомби с идентификатором 2! Обратите внимание на включение класса Request из Laravel, который перехватывает данные запроса. Вам придется не забыть объявить пространство имен, когда вы захотите использовать объект запроса.
Внимание! Этот пример пока не будет полностью рабочим, так как наша база данных и модели еще находятся в процессе создания. Мы займемся этим в ближайшее время.
Мы использовали закрытие маршрутов. Далее обсудим разницу между закрытием маршрутов и контроллерами маршрутов.
Закрытие маршрута — это непосредственная функция, содержащая код, как показано здесь:
Route::get('/zombie', function(){
echo 'Greetings from the Zombie Page!';
});
Для действия контроллера маршрута мы указываем, какой метод контроллера следует вызвать:
Route::get('/zombie', [ZombieController::class, 'index']);
Обращение к /zombie вызывает метод index в ZombieController.
Более подробно мы рассмотрим контроллеры в ближайшее время. Запомните эти различия, и они станут более понятными.
Иногда маршруты требуют параметров.
Например, для просмотра конкретного зомби по адресу site.com/zombie/5 требуется включить в маршрут параметр:
Route::get('/zombie/{id}', function($id){
echo"You've encountered a zombie with ID:". $id;
});
Если наши модели и база данных работают, то это позволит получить и отобразить информацию о конкретном зомби:
Route::get('/zombie/{id}', function($id){
$zombie = Zombie::find($id);
echo 'Name: '. $zombie->name. '<br />';
echo 'Strength: '. $zombie->strength. '<br />'; echo 'Health: '. $zombie->health. '<br />';
});
Напоминаем, что наша настройка не завершена, поэтому данный пример пока не будет работать идеально. С учетом сказанного, в следующей теме мы рассмотрим все это вместе.
Приведённый ознакомительный фрагмент книги Laravel – гайд по выживанию предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других