Laravel - Формы: Путеводитель для начинающих

Здравствуйте, стремящиеся к знаниям разработчики! Как преподаватель компьютерных наук с многолетним опытом, я с радостью провожу вас через захватывающий мир форм Laravel. Не волнуйтесь, если вы новички в программировании – мы начнем с азов и будем подниматься постепенно. К концу этого руководства вы будете создавать формы как профи!

Laravel - Forms

Что такое формы Laravel?

Прежде чем погружаться в код, давайте поймем, что такое формы Laravel. Представьте, что вы заполняете онлайн-заявку на работу – это форма! В веб-разработке формы являются тем, как мы собираем информацию от пользователей. Laravel, наш дружественный фреймворк PHP, делает создание и обработку этих форм breeze.

Почему использовать Laravel для форм?

Вы можете задаваться вопросом: "Почему Laravel?" Ну, позвольте мне рассказать вам一个小 историю. В те времена, когда я был молодым разработчиком (да,那时候 на Земле водились динозавры), создание форм было утомительным процессом. Но Laravel появился как супергерой, делая нашу жизнь намного проще своими мощными инструментами и функциями безопасности.

Начнем

Во-первых, убедитесь, что у вас установлен Laravel на вашей системе. Если у вас еще нет, не волнуйтесь! Просто следуйте официальному руководству по установке Laravel, и вы быстро все настроите.

Пример 1: Создание простого контактного формуляра

Давайте начнем с простого контактного формуляра. Мы создадим форму, которая asks за имя, email и сообщение.

Шаг 1: Создание маршрута

Откройте ваш файл web.php в папке routes и добавьте эту строку:

Route::get('/contact', 'ContactController@showForm');

Это tells Laravel показывать нашу контактную форму, когда кто-то посещает URL '/contact'.

Шаг 2: Создание контроллера

Выполните эту команду в вашем терминале:

php artisan make:controller ContactController

Теперь откройте только что созданный файл ContactController.php и добавьте этот метод:

public function showForm()
{
return view('contact');
}

Этот метод вернет наш вид контактной формы.

Шаг 3: Создание вида

Создайте новый файл под названием contact.blade.php в папке resources/views и добавьте этот код:

<form action="/submit-contact" method="POST">
@csrf
<div>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">Сообщение:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">Отправить</button>
</form>

Разберем это:

  • @csrf это директива Laravel, которая добавляет скрытый токен для предотвращения атак Cross-Site Request Forgery. Представьте это как secret handshake между вашей формой и Laravel.
  • Мы создали поля ввода для имени, email и текстовую область для сообщения.
  • Атрибут required обеспечивает, чтобы пользователи заполняли все поля перед отправкой.

Шаг 4: Обработка отправки формы

Добавьте новый маршрут в web.php:

Route::post('/submit-contact', 'ContactController@submitForm');

Затем добавьте этот метод в ваш ContactController:

public function submitForm(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);

// Обработайте данные формы (например, сохраните в базу данных, отправьте email)

return redirect('/contact')->with('success', 'Спасибо за ваше сообщение!');
}

Этот метод validates данные формы и перенаправляет обратно на страницу контакта с сообщением об успехе.

Пример 2: Создание формы регистрации

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

Шаг 1: Создание маршрута

Добавьте это в ваш web.php:

Route::get('/register', 'RegisterController@showForm');
Route::post('/register', 'RegisterController@register');

Шаг 2: Создание контроллера

Выполните:

php artisan make:controller RegisterController

Добавьте эти методы в RegisterController:

public function showForm()
{
return view('register');
}

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'date_of_birth' => 'required|date',
'gender' => 'required|in:male,female,other',
]);

// Логика создания пользователя здесь

return redirect('/register')->with('success', 'Регистрация успешна!');
}

Шаг 3: Создание вида

Создайте register.blade.php в вашей папке views:

<form action="/register" method="POST">
@csrf
<div>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">Пароль:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="password_confirmation">Подтвердите пароль:</label>
<input type="password" id="password_confirmation" name="password_confirmation" required>
</div>
<div>
<label for="date_of_birth">Дата рождения:</label>
<input type="date" id="date_of_birth" name="date_of_birth" required>
</div>
<div>
<label>Пол:</label>
<input type="radio" id="male" name="gender" value="male" required>
<label for="male">Мужской</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">Женский</label>
<input type="radio" id="other" name="gender" value="other">
<label for="other">Другое</label>
</div>
<button type="submit">Зарегистрироваться</button>
</form>

Эта форма включает различные типы ввода: текст, email, пароль, дата и radio buttons.

Методы��ки

Вот таблица.common Laravel методов��ки:

Метод Описание
required Поле не должно быть пустым
email Должно быть valid email адрес
max:value Максимальная длина
min:value Минимальная длина
unique:table Должно быть уникальным в specified database table
confirmed Должно соответствовать matching field (например, password_confirmation)
date Должно быть valid date
in:foo,bar,... Должно быть одно из listed значений

Заключение

Поздравляю! Вы только что создали две формы Laravel и научились их обрабатывать. Помните, что практика делает perfect, так что продолжайте экспериментировать с различными типами форм и правилами��ки.

Заканчивая, позвольте мне поделиться быстрой историей. У меня был один студент, который боялся форм – он думал, что они сложные и神秘的ные. Но после нескольких уроков он создавал формы для fun! Это и есть красота Laravel – он делает сложное приятным.

Продолжайте программировать, stay curious, и не бойтесь задавать вопросы. Счастливого создания форм!

Credits: Image by storyset