دوره مجازی Laravel - جلسه 24- استفاده از select2 برای دسته بندی ها



visibility  
mode_comment   ۲۰

به نام خدا و سلام. در جلسه قبلی بخش دسته بندی ها رو با استفاده از polymorphic relation پیاده سازی کردیم و بخش مدیریت رو هم ایجاد کردیم و در این جلسه قصد داریم با پلاگین جی کوئری select2 دسته بندی ها رو در بخش ایجاد و نمایش پکیج نمایش بدیم.

info توجه

این مطلب یک جلسه از دوره آموزش لاراول 1 می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش لاراول 1

comment دیدگاه کاربران
MRZ65

سلام.استاد من دقیقاً عملکرد تابع sync رو متوجه نشدم.این متد مشابه تابع toggleclass جی کوئری عمل میکنه؟یعنی attach میکنه در صورت detach باشه و بالعکس.یه مشکل جزئی توی حذف رکوردهای جدول واسه categorizable هست و اون اینه که اگر توی فرم ویرایش package همه categoryهای را حذف کنیم شرط

توی متد update کنترلر package، برابر false میشه و عملیات sync رو انجام نمیده پس باید توی متد update همیشه دسته بندیهای یک پکیج را همیش اول dettach کرد بعد sync کرد؟یعنی

کیوان علی محمدی

سلام. متد sync یک آرایه میگیره مقادیر موجود در آرایه به دو صورت بررسی میشن. اگر در دیتابیس وجود داشته باشن و در آرایه نباشه، میاد اونارو از دیتابیس حذف میکنه. اگر در آرایه باشه ولی در دیتابیس نباشه اونارو به دیتابیس اضافه میکنه.

MRZ65

ممنون.استاد من میخوام مثلاً بخش مدیریت دسته بندیها بگونه باشه ای که وقتی یک رکورد را حذف میکنم(مثلاً دسته فتوشاپ) بطور اتوماتیک تمام فایل ها و پکیجهای متصل به این مجموعه از جدول واسطه(Categorizables) حذف بشه.روش اصولی و منطقی این کار چیه؟باید از متد sync استفاده کنم و قبل از حذف رکورد در جدول category، فایلها و پکیجهای متصل شده به این مجموعه را detach کنم یا از Mysql کمک بگیرم و نوع actionهای جدول واسط را CASCADE یا RESTRICT بذارم؟!یا روش دیگر؟

کیوان علی محمدی

سلام می تونید قبل از حذف کردن رکورد کامل detach کنید و بعدش حذف کنید یه روش دیگه هم استفاده از رویداد حذف کردن مدل های لاراول هستش که در هنگام حذف کردن می تونید تمام relation ها رو حذف کنید.

abolfazl omidi

سلام متوجه یه اشکال شدم گفتم باشما درمیان بذارم ,وقتی میخوایم یوزر رو ویرایش کنیم پسورد دیگه ولیدیشن نمیشه یعنی میتونیم پسورد یک رقمی وارد کنیم بعد سیو کنیم این درصورتیه که ما مینیمم رو 6 و ماکزیمم رو 12 در نظر گرفتیم, لطفا راه حل براش پیدا کنید

کیوان علی محمدی

در حالت ویرایش می تونید چک کنید اگر کاربر فیلد پسوورد رو وارد کرده بود rule براش اعمال بشه.این کارو می تونید با FormRequest انجام بدین.

Rohallah Hatami

سلام
جلسات خیلی داره کند پیش میره ، شما گفته بودید هفته ای 3 جلسه الان تقریبا شده 1 جلسه …

کیوان علی محمدی

سلام. داریم قالب جدید سون لرن رو آماده می کنیم که تا فردا کارش تموم میشه و حتما جلسات جدید رو با سرعت بیشتری منتشر می کنیم.

Rohallah Hatami

سلام
از بارگذاری قالب جدید سایت چند هفته میگذره اما هنوز یه جلسه جدید هم نذاشتید …

کیوان علی محمدی

سلام دو قسمت جدید منتشر شده و این هفته قسمت های جدید هم منشتر میشه.

sadaf

سلام استاد خسته نباشید
با نوشتن این خط کد
$new_package->categories()->sync($request->input(‘categories’));
لاراول چطور متوجه میشه هر کدوم از فیلد هارو در چه فیلد از جدول واسط قرار بده.
در جدول categoriesable چطور متوجه میشه که فیلد categoriesable_type رو پرکنه.
ماهیت دقیقش رو من متوجه نمیشم.

کیوان علی محمدی

سلام دوست عزیز. این مورد توسط رابطه هایی که لاراول بین مدل ها برقرار میکنه اجرا میشه و از این رابطه ها تشخیص میده فیلد ها باید چه مقادیری رو باید داشته باشه.

sadaf

الان این مورد رو categoriesable_type
خود لاراول متوجه میشه؟
ما از کجا باید بفهمیم که خود لاراول بعضی کارهارو انجام میده؟
از کجا بفهمیم که بعضی فید فیلدها مثل همین فیلد رو خود لاراول پر میکنه.

کیوان علی محمدی

این موارد رو معمولا خود لاراول در مستنداتش ارائه میده و ما در همین دوره هم بهشون اشاره کردیم.

sadaf

برای اینکه تعداد پکیج های دسته بندیم رو ببینم این کد رو مینویسم خطا میده.
بقیه موارد مشکلی ندارم ولی نمیدونم چرا برای این مورد اخطار میده
ErrorException in Collection.php line 432:
Type error: Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in C:\xampp\htdocs\larafiles\storage\framework\views\aeb4addb0d616e09a5726b1c91275ce5abbb9bba.php on line 4 and at least 1 expected (View: C:\xampp\htdocs\larafiles\resources\views\admin\category\categoryItem.blade.php) (View: C:\xampp\htdocs\larafiles\resources\views\admin\category\categoryItem.blade.php)

<td>{{$category->packages->get()->count()}}</td>
کیوان علی محمدی

$categories رو نوشتین $category

sadaf

سلام استاد وقتی این کد رو در کنترلر دسته بندی مینویسم تعداد پکیج هاش رو بهم میده
ولی وقتی کد دوم رو در قسمت ویو مینویسم خطا میده

 $categories = Category::find(3);
        $packages = $categories->packages()->get()->count();
        dd($packages);
—————————————————————————-
{{$category->packages->get()->count()}}
کیوان علی محمدی

$categories رو نوشتین $category

آرش ذاکری

با سلام
با چه تابعی میتونم موفقیت آمیز بودن ()sync را گزارش بگیرم؟ میخوام اگر sync انجام شد یه پیام بده و اگر انجام نشد یه پیام دیگه.
با تشکر

کیوان علی محمدی

سلام مقداری برگشتی رو می تونید چک کنید.

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.