نمایش خطای validate در app.blade
-
@foreach ($errors->all() as $error)
- {{ $error }} @endforeach
پاسخ ها
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/770b53b7-0eb8-495f-97f5-ee5b84065f32140003140133593610673.jpg)
قاسم بساکی
سلام خدمت شما دوست عزیز و ممنون بابت نظر مثبتتون
برای نمایش ارور 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();
}
اگر به این روش بالا ولیدیت رو انجام بدید می تونید یک ارور در سشن ست کنید و اون رو در هرجایی نمایش میدید
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/770b53b7-0eb8-495f-97f5-ee5b84065f32140003140133593610673.jpg)
قاسم بساکی
و با این دستور نمایش بدید
@if (session()->has('custom_message'))
<h4 >
{{session('custom_message')}}
</h4>
@endif
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/770b53b7-0eb8-495f-97f5-ee5b84065f32140003140133593610673.jpg)
قاسم بساکی
فکر کنم بشه اینطوری هم سشن رو ست کرد - تست کنید.
session()->flash($validator->errors());
به هر ترتیب نظر بنده اینه که باید با استفاده از سشن ، ارور رو ست کنید و در صفحه بلید ، اون رو از سشن دریافت کنید. که همه مربوط به لاراول میشه و من در لایووایر همچین چیزی ندیدم .
امیدوارم پاسخ ها به کارتون بیاد
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
سلام
ممنون از جوابتون.
سشن جواب نداد
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/770b53b7-0eb8-495f-97f5-ee5b84065f32140003140133593610673.jpg)
قاسم بساکی
سلام خدمت شما دوست عزیزم
مطمئن هستید که درست انجام دادید؟
شما هرجایی که میخواهید ارور نمایش داده بشه این کد استفاده می کنید
@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
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
با سشن نشد
ولی با روشهای مختلفی میشه اینکارو کرد.
اولین روشی که کامل جواب داد و میتونی کلی پارامتر هر جایی که دلت خواست بفرستی دستور 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 کنم
می تونین هر داده ای رو هر جایی خواستین بفرستین
سپاس از آقای بساکی عزیز
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/770b53b7-0eb8-495f-97f5-ee5b84065f32140003140133593610673.jpg)
قاسم بساکی
خیلی عالی و خوشحالم که مشکل حل شد.
توی پروژه از emit هم استفاده کردیم برای نمایش پیام تایید
موفق باشید