вопросы пишите мне в телеграмм +375298176892
можно скачать офлайн версию сайта: code.mu old.code.mu

Продвинутая работа с формами в Laravel

Сейчас мы с вами разберем некоторые продвинутые нюансы при работе с формами в фреймворке Laravel.

Все данные

Вы можете получить все данные ввода в виде массива с помощью метода all:

<?php $data = $request->all(); ?>

Пусть в вашей форме есть произвольное количество инпутов. После отправки формы получите массив отправленных значений, отправьте его в представление и выведите эти данные в виде списка ul.

Получение части переменных запроса

Метод only позволяет получить массив, состоящий из значений перечисленных полей формы. Имена полей можно передавать в виде массива или перечислять через запятую.

Пусть, к примеру, была отправлена форма с полями 'name', 'age', 'login', 'password'. Давайте получим массив, состоящий из значений полей 'name' и 'age':

<?php $data = $request->only(['name', 'age']); ?>

Имена полей можно передавать в виде массива либо перечислять через запятую, вот так:

<?php $data = $request->only('name', 'age'); ?>

Аналогичным образом можно использовать метод except, позволяющий исключить часть данных из запроса. Давайте, например, исключим поля 'login' и 'password':

<?php $data = $request->except(['login', 'password']); ?>

Метод except также позволяет перечислять имена полей через запятую:

<?php $data = $request->except('login', 'password'); ?>

Пусть у нас будет форма, имитирующая регистрацию пользователя на сайте. Спросите с помощью этой формы у пользователя его имя, фамилию, email, желаемый логин, желаемый пароль (инпут с типом password). После отправки формы выведите на экран в виде списка ul все отправленные поля, кроме поля с паролем и email. Решите задачу сначала через except, а затем через only.

Сложные имена в формах

Иногда имена элементов форм могут представлять массивы, наподобие такого:

<form action=""> <input type="text" name="user[name]"> <input type="text" name="user[surname]"> <input type="submit"> </form>

Для получения значений таких инпутов вы можете использовать точечную запись для обращения к массивам:

<?php $name = $request->input('user.name'); $name = $request->input('user.surname'); ?>

Внедрение зависимости и параметры маршрута

По следующей ссылке изучите раздел Внедрение зависимости и параметры маршрута.

Самостоятельно попробуйте получить данные из формы, передав при этом два параметра в ваш маршрут.

Методы и путь запроса

По следующей ссылке изучите раздел Методы и путь запроса - все неизученные ранее вами места.

Подсказка по теории: "Для получения полного URL без строки запроса" - имеется ввиду без GET параметров.

Сделайте так, чтобы у вас было действие, которое будет срабатывать по следующему адресу: /test/method/. Перейдите по указанному адресу, но с GET параметром, например, так: /test/method?param=1. Решите все задачи ниже для данного адреса с GET параметром.

Для указанного адреса выведите результат метода path.

Для указанного адреса выведите результат метода url.

Для указанного адреса выведите результат метода fullUrl.

С помощью метода fullUrlWithQuery добавьте к запрошенному URL GET параметр page со значением 1.

Самостоятельно попробуйте поработать с методом is.