РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗ppinPmRcSc 33 of 41 menu
◀ ▶

Сообщение об успехе в Inertia

Давайте изучим такое понятие, как flash-сообщение. Это короткая надпись после удачного действия. Её кладут методом flash у Inertia перед редиректом на следующий экран.

На открытом списке сообщение лежит в $page.flash, а не в пропсах страницы. При следующем заходе на адрес надпись уже пропадает: она нужна только один раз после сохранения.

Давайте разрешим запись заголовка в модели:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = [ 'title', ]; } ?>

Давайте опишем список, форму создания и сохранение с сообщением:

<?php use App\Models\Post; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/posts', function () { return Inertia::render('Posts/Index', [ 'posts' => Post::orderBy('id')->get([ 'id', 'title', ]), ]); }); Route::get('/posts/create', function () { return Inertia::render('Posts/Create'); }); Route::post('/posts', function (Request $request) { Post::create([ 'title' => $request->string('title'), ]); Inertia::flash('message', 'Post created.'); return redirect('/posts'); }); ?>

Давайте выведем надпись над списком заголовков:

<script setup> defineProps({ posts: Array, }) </script> <template> <p v-if="$page.flash.message"> {{ $page.flash.message }} </p> <div v-for="post in posts" :key="post.id" > {{ post.title }} </div> </template>

Давайте поставим форму на отдельный экран:

<script setup> import { Form } from '@inertiajs/vue3' </script> <template> <Form action="/posts" method="post"> <input type="text" name="title" /> <button type="submit">Save</button> </Form> </template>

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить