رفتن به مطلب
انجمن پشتیبانی لاراول ایران

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

saber

مدیرکل
  • تعداد ارسال ها

    341
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    77

تمامی ارسال های saber

  1. saber

    وب ساز

    برای رفع این خطا توی ترمینال باید دستور زیر رو اجرا کنید php artisan key:generate
  2. برای این کار میتونید فایل های .vue رو در پوشه ی resources/js/components قرار بدید و بعد در فایل app.js اونها رو import کنید. به عنوان مثال: در فایل resources/js/app.js: require('./bootstrap'); Vue.component('example-component', require('./components/ExampleComponent.vue').default); const app = new Vue({ el: '#app', }); بعد در فایل blade خودتان، می توانید از component ها استفاده کنید: <div id="app"> <example-component></example-component> </div> بعدش باید webpack.mix.js رو طوری تنظیم کنید که فقط app.js رو کامپایل کنه mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css');
  3. لینک زیر رو چک کنید https://stackoverflow.com/questions/28956911/how-can-i-access-my-laravel-app-from-another-pc
  4. اینقسمت باید id شهری رو که انتخاب شده از طریق جیکوئری دریافت کنید و با نام city به کنترلر ارسال کنید چون توی کنترلر دیدم با نام city دریافت میکنید به شکل زیر function manage_region_status(status) { let city = $('#city_input_id_add_here').val(); $.ajax({ type:'POST', url:"{{ route('your route name') }}" data: { "_token": "{{ csrf_token() }}", status: status, city: city }, }); } توی کنترلر یه فیلد با مقدار all هم دیدم دریافت میکنید اون رو هم باید مقدارش رو از فرم بگیرید و توی ایجکس ارسال کنید
  5. اون جدولی که بهتون گفتم براساس اون سناریوی اولی بود که گفته بودید. الان میخواید بطور جداگانه برای هر محصولی تخفیف ایجاد کنید؟ یا میخواید کدهای تخفیف استفاده شده رو برای هر محصولی مشخص کنید؟
  6. باید یه بخش تنظیمات داشته باشید و از طریق اون همیشه طبق نیازی که دارید تخفیف رو تعیین کنید مثلا در تنظیمات مشخص کنید تعداد معرف: x و میزان تخفیف y بعد براساس تعداد معرفیهای کاربر و تنظیماتی که انجام دادید میتونید میزان تخفیف رو محاسبه کنید.
  7. برای این موضوع میتونید یه بخش تنظیمات توی پنل ادمین داشته باشید و بخشهایی رو که میخواید قابل فیلتر باشن از اونجا مشخص کنید و هر زمانی خواستید یه بخشی رو فعال یا غیرفعال کنید
  8. توی پست اول گفتید هر کاربر که از کد معرف استفاده کنه مثلا 30 درصد تخفیف به کاربر معرف تعلق بگیره اگر اینطوری باشه و میخواید برای هر ثبت نام معرفی شده یه کد تخفیف جنریت کنید میتونید یه جدول برای تخفیفها بسازید و وقتی کاربری با کد یه کاربر ثبت نام کرد تخفیف رو براش توی جدول تخفیفها ثبت کنید این جدول هم میتونه ستونهای زیر رو داشته باشه: discount_id discount_user_id شناسه کاربری که تخفیف بهش تعلق گرفته discount_code کد تخفیف ایجاد شده discount_percent درصد تخفیف discount_status وضعیت تخفیف که 0 یا 1 بگیره که پیشفرض 0 باشه و زمانی که از کد تخفیف استفاده شد به 1 تغییر بدید که مشخص باشه کدوم تخفیفها استفاده شده created_at updated_at کلا تخفیف حالتهای مختلفی میتونه داشته باشه ولی با این روش به نظرم چیزی رو که میخواید میتونید پیاده سازی کنید.
  9. چون همه مناطق شما در یه وضعیت هستن و فعال یا غیرفعال هستن توی کنترلر که در متد fetchRegion مناطق رو دریافت میکنید status رو اونجا چک کنید و توی response که برگشت میدید یه فیلد با اسم status قرار بدید و مقدارش رو برابر با وضعیت مناطق دریافتی قرار بدید بعدشم که در بخش جیکوئری با پاسخی که ایجکس دریافت کرده دکمه ها رو مدیریت کنید. مشابه کد زیر میتونید status رو پاس بدید public function fetchRegion(Request $request) { $data['regions'] = Region::where("city_id", $request->city_id)->get(); $data['status'] = $data['regions'][0]->status; // دقیقا مطابق با فیلدی که در دیتابیس هست مقدار رو دریافت کنید return response()->json($data); }
  10. دیتابیستون رو چک کنید ببینید اطلاعات چطوری ذخیره شدن احتمال داره اطلاعات درست توی دیتابیستون ذخیره نشده
  11. بین شهر و منطقه رابطه چند به چند دارید؟ و بین منطقه و کاربران رابطه یک به چند؟
  12. باید از where استفاده کنید و count رو بگیرید $count = User::where('reagent_code', $user->invite_code)->count();
  13. برای اینکه status رو توی response ندارید من اون رو برای تست نوشتم و شما باید مقدارش رو از وضعیت مناطق بگیرید و در response همون مقدار رو دریافت و براساس اون دکمه ها رو مخفی یا نمایش بدید
  14. با همون ستونها میتونید کار کنید یکی برای معرفی افراد جدید هست دومی هم که برای این هست که مشخص بشه کاربر توسط چه کسی معرفی شده و طبق همون ستون reagent_code باید تعداد افرادی رو که معرفی کرده پیدا کنید
  15. شرطهایی رو که توی جستجو گذاشتید از طریق فرم ارسال نمیکنید؟ توی کنترلر مرحله به مرحله بعد از هر شرط یه dd بگیرید ببینید اشکال کارتون کجا هست اگه شرطها برقرار باشن و روابط رو درست پیاده سازی کنید خروجی میده
  16. باید روابط بین جداول رو اول ایجاد کنید بعد توی کوئریها ازشون استفاده کنید کلا روشهای مختلفی میشه به نتایج رسید ولی با روابط اول باید بین شهر و منطقه و کاربران روابطی رو که دارن ایجاد کنید مثلا به شکل زیر // User model public function region() : BelongsTo { return $this->belongsTo(Region::class); } =========================== // City model public function regions() : HasMany { return $this->hasMany(Region::class); } ============================ // Region model public function users() : HasMany { return $this->hasMany(User::class); } public function city() : BelongsTo { return $this->belongsTo(City::class); } ======================== // توی کنترلر به شکل زیر $users = User::where('status', true); if ($request->has('age_difference')) { $users->where('age_difference', '=', $request->age_difference); } if ($request->has('time')) { $users->where('time', '=' , $request->time); } if ($request->has('disability')) { $users->where('disability', '=' , $request->disability); } if ($request->has('name')) { $users->where(function ($query) use ($request) { $query->whereHas('region', function ($query) use ($request) { $query->whereHas('city', function ($query) use ($request) { $query->where('name', 'like', $request->name); }); }); }); }); } dd($users->get());
  17. بخش نمایش دکمه ها مربوط به جیکوئری هست و ارتباطی با لاراول نداره ولی باید توی قسمتی که response مناطق رو دریافت میکنید status رو هم دریافت کنید و براساس او از متدهای show و hide توی جیکوئری میتونید استفاده کنید مثلا دو تا دکمه دارید که پیشفرض مخفی هستن و نمایش داده نمیشن وقتی response مناطق رو دریافت کردید اگه از قبل فعال بودن دکمه غیرفعال رو نمایش میدید یه چیزی شبیه کد زیر: <button type="submit" style="display: none" id="enable_region" onclick="manage_region_status(1)">فعال</button> <button type="submit" style="display: none" id="disable_region" onclick="manage_region_status(0)">غیرفعال</button> <script> $('#city-dropdown').on('change', function () { var idCity = this.value; $("#region-dropdown").html(''); $.ajax({ url: "{{url('admin/locations/fetch-regions')}}", type: "POST", data: { city_id: idCity, _token: '{{csrf_token()}}' }, dataType: 'json', success: function (res) { $('#region-dropdown').html('<option value="all">تمام مناطق</option>'); // اینجا وضعیت رو چک میکنید و براساس اون دکمه مورد نظر رو نمایش میدید if(res.status) { $('#enable_region').hide(); $('#disable_region').show(); }else{ $('#enable_region').show(); $('#disable_region').hide(); } } }) }) function manage_region_status(status) { // فرم رو اینجا ارسال میکنید } </script> در مورد کنترلر هم متوجه کارتون نشدم توی متد submitLocation در شرط اول مناطق رو غیرفعال کردید و در صورتی که شرط برقرار نیست با جدول کاربران sync کردید که این دو تا کار باهم همخوانی ندارن
  18. الان مشکلتون این هست که چطوری دکمه های فعال یا غیرفعال رو نمایش بدید؟ چون میخواید بطور کلی مناطق رو فعال یا غیرفعال کنید و مثلا انتخاب یک یا چند منطقه ندارید کار راحتتری هست میتونید موقعی که لیست مناطق رو دریافت میکنید فیلد status رو هم بگیرید و براساس اون توی response بخش ایجکس هر کدوم از دکمه های فعال یا غیرفعال رو نمایش بدید و موقعی که روی دکمه مورد نظر کلیک شد عمل فعال یا غیرفعاسازی رو انجام بدید.
  19. منظورتون این هست که خود جدول شهرها با کاربران از طریق جدول مناطق ارتباط داره؟ و جدول شهر مستقیم ارتباطی به user نداره درسته؟
  20. نیازی نیست فیلد جدید اضافه کنید اون رو حذفش کنید. برای اینکه چک کنید کاربر توی لیست مورد علاقه هست یا خیر اول باید لیست کاربران مورد علاقه یه نفر رو دریافت کنید بعد توی حلقه foreach که در blade کاربران رو نمایش میدید باید چک کنید شناسه کاربر جاری در لیست کاربران مورد علاقه هست یا خیر که یه کد مشابه زیر میتونید بنویسید // با این کد لیست شناسه کاربر مورد علاقه کاربری رو که لاگین کرده دریافت کنید و به بلید بفرستید $favorites = Favorite::where('user_id',auth()->user()->id)->pluck('favorite_user_id')->toArray(); // با کد زیر هم در حلقه ای که کاربران رو نمایش میدید چک کنید ببینید مورد علاقه هست یا خیر @foreach($users as $user) @if(in_array($user->id,$favorites)) // مورد علاقه هست @else // مورد علاقه نیست @endif @endforeach
  21. توی blade که آبجکت user رو دارید و شناسه کاربر رو توی route پاس میدید این آبجکت رو از کدوم کاربر ساختید؟ این آبجکت باید برای پروفایل کاربری باشه که دارید مشاهده میکنید مورد بعدی هم توی متدهای کنترلر که کد زیر رو نوشتید $favorite_user_id = Favorite::find($favorite); ورودی خود متد که $favorite هست شناسه همون کاربری هست که میخواید اضافه یا حذف کنید بدون نوشتن کد بالا میتونید مستقیم شناسه دریافتی رو به متد create یا delete پاس بدید ولی چون از متد get برای ساخت route استفاده کردید بهتر هست قبلش چک کنید چنین کاربری توی سایت موجود هست یا خیر اگر کاربر موجود بود ادامه کار رو انجام بدید در غیراینصورت یه پیغام خطا برگردونید که یه چیزی شبیه کد زیر میتونید بنویسید: $user = User::find($favorite); if(!$user) { // بازگشت با پیغام خطا } // اضافه شدن به لیست علاقه مندی Favorite::create([ 'user_id' => auth()->user()->id, 'favorite_user_id' => $favorite, 'added_date' => Carbon::now() ]); // حذف از لیست // اینجا قبل از حذف هم میتونید چک کنید که آیا چنین کاربری در لیست علاقه مندی از قبل هست یا خیر Favorite::where('user_id',auth()->user()->id) ->where('favorite_user_id',$favorite) ->delete();
  22. شما کدتون رو چطوری نوشتید؟ کدهایی که توی view نوشتید و route هایی که ساختید به همراه کدهایی که توی کنترلر نوشتید قرار بدید ببینیم مشکلتون کجا هست
  23. خطا بخاطر این هست که favorite_user_id مقداری نفرستادید باید شناسه کاربری رو که میخواید توی لیست دلخواه قرار بگیره براش بفرستید. من با api اون مقدار رو با نام user_id براش ارسال کردم
  24. من یه توضیح کلی براتون مینویسم بررسی کنید و از روی اون پیاده سازی کنید. اگه فقط برای model کاربران میخواید اینکار انجام بشه ساده ترین روش این هست که یه جدول مثلا به اسم favorites بسازید با مایگریشن زیر Schema::create('favorites', function (Blueprint $table) { $table->bigIncrements('id'); $table->foreignId('user_id')->constrained()->onDelete('cascade'); $table->foreignId('favorite_user_id')->constrained('users','id')->onDelete('cascade'); $table->timestamp('added_date')->default(DB::raw('CURRENT_TIMESTAMP')); }); بعد برای اضافه کردن به لیست و حذف یه کاربر از لیست میتونید متدهای زیر رو بنویسید من اینها رو با api نوشته بودم شما میتونید بدون api هم بنویسید // add user to favorite list public function add(Request $request) { $favorite_user_id = $request->get('user_id'); // شناسه کاربری هست که کاربر لاگین شده در سایت آنرا در لیست مورد دلخواه قرار میدهد $favorite = Favorite::create([ 'user_id' => auth()->user()->id, 'favorite_user_id' => $favorite_user_id, 'added_date' => Carbon::now() ]); // return your response } // delete user from favorite list public function remove(Request $request) { $favorite_user_id = $request->get('user_id'); // شناسه کاربری که میخواهیم از لیست خود حذف کنیم Favorite::where('user_id',auth()->user()->id) ->where('favorite_user_id',$favorite_user_id) ->delete(); // return your response } ولی اگر بخواید به غیر از کاربران موارد دیگه ای رو هم به لیست دلخواه اضافه کنید اینطوری بهتر هست از روشهای دیگه ای مثل پیاده سازی با روابط polymorphic استفاده کنید.
  25. saber

    لاراول

    احتمالا متدی که براش درخواست ارسال میکنید از formRequest استفاده کردید و متد authorize مقدار true برنمیگردونه باید formrequest مربوطه رو بررسی کنید
×
×
  • جدید...