(Создание контактной формы Laravel CRUD без SMTP на любом HTML-шаблоне или веб-сайте на основе HTML с контактной формой).
Подключение панели администратора
- Небольшое украшение панели администратора
Итак, после последнего урока я очистил панель тем Corona Admin. Для этого потребуются базовые знания HTML и CSS. Поскольку это не учебник по HTML, мы пропустим подробные объяснения того, как я это сделал.
http://127.0.0.1:8000/admin/index
http://127.0.0.1:8000/admin/view-messages
- web.php
В web.php мы должны сделать маршрут для каждого нашего сообщения:
Route::get(“/admin/view-messages”, [ContactController::class, ‘listMessages’]); Route::get(“/admin/messages/{id}”, [ContactController::class, ‘message_details’]); Route::delete(“/admin/messages/{id}/delete”, [ContactController::class, ‘delete_message’]);
- Создайте файл с именем listmessages.blade.php
Расположение: views/admin/listMessages.blade.php
Что делать: Измените файл HTML, в котором перечислены все сообщения контактной формы.
- Подключите это к логике.
Это соответствующая часть указанного файла после тега ‹nav›.
<div class=”main-panel”> <div class=”content-wrapper”> <button id=”multiple-delete” data-route=”{{ route(‘multiple-delete’) }}” class=”btn btn-danger ml-2 mb-3">Delete All Selected</button> <div class=”row”> <div class=”col-12 grid-margin”> <div class=”card”> <div class=”card-body”> <h4 class=”card-title”>Data</h4> <div class=”table-responsive”> <table class=”table” id=”dataTables”> <thead> <tr> <th> <div class=”form-check form-check-flat m-0"> <label class=”form-check-label”> <input type=”checkbox” class=”form-check-input”> </label> </div></th> <th> Name </th> <th> Email </th> <th> Actions </th> </tr> </thead> <tbody> @foreach ($messages as $message) <tr> <td> <div class=”form-check form-check-flat m-0"> <label class=”form-check-label”> <input type=”checkbox” class=”form-check-input” value={{ $message->id }}> </label> </div> </td> <td>{{ $message->name }}</td> <td>{{ $message->email }}</td> <td> <a href=”{{ url(‘/admin/messages/’ . $message->id . ‘/delete’) }}”><i class=”mdi mdi-pencil icon-sm mr-2 text-success”></i></a> <form method=”post” action=”{{ url(‘/admin/messages/’ . $message->id . ‘/delete’) }}” style=”display:inline” style=”display: inline”> {{ method_field(‘DELETE’) }} @csrf <button type=’submit’ class=”mdi mdi-close icon-sm text-danger” style=”background-color: black;”></button> </form> </td> </tr> @endforeach </tbody> </table> </div> </div> </div> </div> </div> <button type=”button” class=”btn btn-primary”>log out</button> </div>
По сути, так вы подключаете раздел сообщений панели администратора Laravel.
Пояснения:
- Раздел @foreach создает цикл, который перебирает все сообщения.
@foreach ($messages as $message) … @endforeach
- Кнопка Details должна быть написана примерно так:
<a href=”{{ url(‘/admin/messages/’ . $message->id) }}” class=”btn btn-primary btn-sm”>Details</a>
Конечно, вместо текста «Подробности» я решил использовать значок карандаша в своем реальном коде.
- В атрибуте href мы указали маршрут, который необходимо создать в контроллере маршрута для просмотра сведений об одном сообщении.
<a href=”{{ url(‘/admin/messages/’ . $message->id . ‘/delete’) }}”>
- Кнопка удаления более сложная. Это не может быть тег ссылки, потому что ссылки делают только запрос GET.
- Вместо этого мы используем форму только с кнопкой отправки. Атрибут действия принимает маршрут, который мы должны создать для удаления сообщения.
<form method=”post” action=”{{ url(‘/admin/messages/’ . $message->id . ‘/delete’) }}” style=”display:inline” style=”display: inline”> {{ method_field(‘DELETE’) }} @csrf <button type=’submit’ class=”mdi mdi-close icon-sm text-danger” style=”background-color: black;”></button> </form>
- Затем мы используем форму только с кнопкой отправки. Атрибут действия принимает маршрут, который мы должны создать для удаления сообщения.
- Стандартная HTML-форма может отправлять только запросы GET или POST. Итак, мы добавили {{ method_field(‘DELETE’) }}, чтобы сообщить laravel, что мы делаем запрос DELETE.
- Теперь запустите сервер с помощью команды php artisan serve и перейдите по адресу http://127.0.0.0.1:8000/admin/view-messages.
** Кнопка деталей написана так:
<a href=”{{ url(‘/admin/messages/’ . $message->id) }}” class=”btn btn-primary btn-sm”>Details</a>
Конечно, я решил использовать значок вместо текста «Подробности» для кнопки «Подробности».
- Вот код для деталей-message.blade.php
Расположение: resources/views/details-message.blade.php
<html> <head> <title>Contact Form</title> <link rel=”stylesheet” href=”https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"> </head> <body> <div class=”container”> <div class=”row”> <div class=”col-md-8 mx-auto my-5"> <h3 class=”text-center mb-5">Message details</h3> <h3>Name: {{ $message->name }}</h3> <h3>Email: {{ $message->email }}</h3> <h3>Message: {{ $message->message }}</h3> </div> </div> </div> </body>
Все в порядке. В любом случае, все должно работать. Дайте знать, если у вас появятся вопросы.