نمایش خطای validate در app.blade
-
@foreach ($errors->all() as $error)
- {{ $error }} @endforeach
7 پاسخ
- قاسم بساکی30 مرداد ۱۴۰۰
سلام خدمت شما دوست عزیز و ممنون بابت نظر مثبتتون
برای نمایش ارور validation ما از پراپرتی ها (متغیر های public) استفاده می کنیم که هر پراپرتی در خود اون کامپوننت و در صفحه blade خود اون کامپوننت شناسایی میشه . و به اون روشی که در آموزش گفتیم نمیشه در لایه اصلی نمایش داد.
public function submit() { $validator = Validator::make( [ 'name' => $this->name, 'email' => $this->email, ], [ 'name' => 'required|min:6', 'email' => 'required|email', ] ); if ($validator->fails()) { session()->flash('custom_message', 'Oops! Something went wrong...'); } $validator->validate(); }اگر به این روش بالا ولیدیت رو انجام بدید می تونید یک ارور در سشن ست کنید و اون رو در هرجایی نمایش میدید
- قاسم بساکی30 مرداد ۱۴۰۰
و با این دستور نمایش بدید
@if (session()->has('custom_message')) <h4 > {{session('custom_message')}} </h4> @endif - قاسم بساکی30 مرداد ۱۴۰۰
فکر کنم بشه اینطوری هم سشن رو ست کرد - تست کنید.session()->flash($validator->errors());به هر ترتیب نظر بنده اینه که باید با استفاده از سشن ، ارور رو ست کنید و در صفحه بلید ، اون رو از سشن دریافت کنید. که همه مربوط به لاراول میشه و من در لایووایر همچین چیزی ندیدم .
امیدوارم پاسخ ها به کارتون بیاد
- مصطفی عباس6 شهريور ۱۴۰۰
سلام
ممنون از جوابتون.
سشن جواب نداد
- قاسم بساکی6 شهريور ۱۴۰۰
سلام خدمت شما دوست عزیزم
مطمئن هستید که درست انجام دادید؟
شما هرجایی که میخواهید ارور نمایش داده بشه این کد استفاده می کنید
@if (session()->has('custom_message')) <h4 > {{session('custom_message')}} </h4> @endifو به این شکل سشن ست می کنید
session()->flash('custom_message', 'Oops! Something went wrong...');این لینک هم یک نگاه بندازید
https://laravel-livewire.com/docs/2.x/flash-messages - مصطفی عباس7 شهريور ۱۴۰۰
با سشن نشد
ولی با روشهای مختلفی میشه اینکارو کرد.
اولین روشی که کامل جواب داد و میتونی کلی پارامتر هر جایی که دلت خواست بفرستی دستور emit هست
کامپوننت messages ایجاد کردم
<?php namespace App\Http\Livewire; use Livewire\Component; class Messages extends Component { public $listeners = ['danger']; public $msg=''; public $typ_msg=''; public function danger($rec_msg) { $this->msg= $rec_msg; $this->typ_msg= 'danger'; } public function render() { return view('livewire.messages'); } }view:
<div> @if (!empty($msg)) <div class="alert alert-{{$typ_msg}}"> <ul> @foreach ( $msg as $messages ) @foreach ( $messages as $message ) <li> {{$message}}</li> @endforeach @endforeach </ul> </div> @endif </div>حالا هرجایی تو هر کامپوننت خواستید میتونین ازین کامپوننت استفاده کنید. مثلا : پارامتر اول key و دوم value
$this->emit('danger', $validator->errors());پارامتر اول key و دوم value
------------------------
البته بهتر هم میشه نوشت
حوصلم نکشید clean code کنم
می تونین هر داده ای رو هر جایی خواستین بفرستین
سپاس از آقای بساکی عزیز
- قاسم بساکی7 شهريور ۱۴۰۰
خیلی عالی و خوشحالم که مشکل حل شد.
توی پروژه از emit هم استفاده کردیم برای نمایش پیام تایید
موفق باشید
