نمایش خطای validate در app.blade
-
@foreach ($errors->all() as $error)
- {{ $error }} @endforeach
پاسخ ها
قاسم بساکی
سلام خدمت شما دوست عزیز و ممنون بابت نظر مثبتتون
برای نمایش ارور 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();
}
اگر به این روش بالا ولیدیت رو انجام بدید می تونید یک ارور در سشن ست کنید و اون رو در هرجایی نمایش میدید
قاسم بساکی
و با این دستور نمایش بدید
@if (session()->has('custom_message'))
<h4 >
{{session('custom_message')}}
</h4>
@endif
قاسم بساکی
فکر کنم بشه اینطوری هم سشن رو ست کرد - تست کنید.
session()->flash($validator->errors());
به هر ترتیب نظر بنده اینه که باید با استفاده از سشن ، ارور رو ست کنید و در صفحه بلید ، اون رو از سشن دریافت کنید. که همه مربوط به لاراول میشه و من در لایووایر همچین چیزی ندیدم .
امیدوارم پاسخ ها به کارتون بیاد
سلام
ممنون از جوابتون.
سشن جواب نداد
قاسم بساکی
سلام خدمت شما دوست عزیزم
مطمئن هستید که درست انجام دادید؟
شما هرجایی که میخواهید ارور نمایش داده بشه این کد استفاده می کنید
@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
با سشن نشد
ولی با روشهای مختلفی میشه اینکارو کرد.
اولین روشی که کامل جواب داد و میتونی کلی پارامتر هر جایی که دلت خواست بفرستی دستور 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 کنم
می تونین هر داده ای رو هر جایی خواستین بفرستین
سپاس از آقای بساکی عزیز
قاسم بساکی
خیلی عالی و خوشحالم که مشکل حل شد.
توی پروژه از emit هم استفاده کردیم برای نمایش پیام تایید
موفق باشید