🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۷ Mahdi
استفاده از route model binding
جامعه لاراول ایجاد شده در ۱۹ اسفند ۱۴۰۱

سلام وقتتون بخیر

از اینجا ک انتخاب کاربر با نیست و توسط user این عمل صورت میگیره راه حلی وجود داره ک ما با پیاده سازی اون از route model binding استفاده کنیم

                <form action="{{ route('notification.sendEmail') }}" method="POST" >
                    @csrf
                    <div class="form-group ">
                        <label for="user">@lang('notification.users')label>
                        <select name="user"  class="form-control" id="user">
                            @foreach ($users as $user)
                                <option value="{{ $user->id }}">{{ $user->name }}option>
                            @endforeach
                        select>
                    div>
                    <button type="submit" class="btn btn-info">@lang('notification.send')button>
                form>

مثلا شرطی رو این قسمت بزاریم

                        <select name="user"  class="form-control" id="user">
                            @foreach ($users as $user)
                                <option value="{{ $user->id }}">{{ $user->name }}option>
                            @endforeach
                        select>

وقتی user مشخص شد اون بگیره و پاس به وت ما تا مجبور به find کردن اون نباشیم؟

سلام مهدی عزیز

متوجه منظورت نمیشم.

کامل‌تر توضیح بده.

احمدرضا فاطمی کیا ۱۹ اسفند ۱۴۰۱، ۰۸:۰۷

در کنترلر به شکل زیر user پیدا کردیم

            $mail->sendMail(User::find($Request->user), new $mailable);

ولی چیزی ک هست قظعا روشی وجود داره برای استفاده از route model binding

من دنبال اونم

Mahdi ۱۹ اسفند ۱۴۰۱، ۰۸:۱۶

مهدی عزیز

برای این موارد اصلا انجام چنین کاری پیشنهاد نمیشه.

وقتش شما کاربر رو از ریکوئست میتونی دریافت کنی چه فرقی میکنه

توی روتر به شکل روت مدل بایندینگ استفاده کنید و توی فرم برای بایند شدن request->user رو پاس بدید.

احمدرضا فاطمی کیا ۱۹ اسفند ۱۴۰۱، ۰۸:۳۱

احمدرضا جان بنظر من به صورت binding کد ما تمیز تره و شکل و شمایل بهتری داره

Mahdi ۱۹ اسفند ۱۴۰۱، ۰۸:۴۸

ولی روش قبلی روش بهتری بود؛از لحاظ اصول و طراحی ساختار بهتری داشت.

هر طور مدنظرته.

احمدرضا فاطمی کیا ۱۹ اسفند ۱۴۰۱، ۰۹:۰۲

حالا درست یا غلط پیاده سازیش به چه شکل انجام میشه؟

Mahdi ۱۹ اسفند ۱۴۰۱، ۰۹:۴۵

روت مورد نظر رو اوکی کن و یوزر رو برای بایند قرار بده

بعد هم توی اکشن فرم روت رو بزن و یوزر رو به شکل زیر پاس بده:

{{route('notification.sendEmail',request()->user())}}
احمدرضا فاطمی کیا ۱۹ اسفند ۱۴۰۱، ۱۰:۴۹