Paradox
2 سال پیش توسط Paradox مطرح شد
0 پاسخ

مشکل استاتوس در پنل مدیریت

سلام شب بخیر من اطلاعات استان و شهر و منطقه رو موقع ثبت نام از کاربر میخام که از طریق ایجکس اطلاعات رو از دیتابیس دریافت میکنم که تا اینجا اکیه
حالا میخام تو پنل مدیریت بتونم مناطق شهرهارو غیرفعال یا فعال کنم مثلا اگه شهر تهران انتخاب شد بتونم تمام مناطقش رو فعال و غیرفعال کنم
برای این چون با ایجکس هست به مشکل خوردم و نتو نستم انجام بدم

الان تمام منطقه هارو نمایش میده چجوری دکمه فعال و غیرفعال رو بزارم که تمام مناطق یک شهر رو در بر بگیره

دیتابیس منطقه

 Schema::create('regions', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->tinyInteger('status')->default(1);
            $table->foreignId('city_id')->constrained()->cascadeOnDelete();
            $table->timestamps();
        });

روت

  Route::get('/locations' , [AdminController::class , 'showLocation'])->name('locations');
    Route::post('/locations/fetch-cities' , [AdminController::class , 'fetchCity']);
    Route::post('/locations/fetch-regions' , [AdminController::class , 'fetchRegion']);
    Route::post('/locations' , [AdminController::class , 'submitLocation'])->name('send.locations');

    Route::get('locations/status/{location}', [AdminController::class ,'updatestatus'])->name('location.status');

کنترلر

 public function showLocation()
    {
        $provinces = $data['province'] = Province::get(["name", "id"]);
        // $regions = Region::get();
        return view('admin.locations.location' , compact('provinces'));
    }

    public function fetchCity(Request $request)
    {
        $data['cities'] = City::where("province_id", $request->province_id)
        ->get(["name", "id"]);

        return response()->json($data);
    }

    public function fetchRegion(Request $request)
    {
        $data['regions'] = Region::where("city_id", $request->city_id)
        ->get(["name", "id"]);

        return response()->json($data);
    }

    public function submitLocation(Request $request , Region $region)
    {
        $request->validate([
            'province' => 'required',
            'city' => 'required',
            'region' => 'required',
        ]);

        if (Region::where('city_id', $request->city)->count() > 0)
        {
            if ($request->region[0] == 'status') {
                $region = Region::where('city_id', $request->city)->get();

            } else {
                alert("لطفا یک گزینه را انتخاب کنید");
            }

        } else {
            return redirect(route('locations'));
        }

        return redirect(route('locations'));

    }

    public function updatestatus(Region $region)
    {
        if ($region->status == 1) {
            $region->status = 0;
        } else {
            $region->status = 1;
        }

        $region->save();
        alert()->success('به روز رسانی با موفقیت انجام شد' , 'با تشکر');

        return redirect(route('regions'));
    }

ایجکس

  $(document).ready(function () {

        $('#province-dropdown').on('change', function () {
            var idProvince = this.value;
            $("#city-dropdown").html('');
            $.ajax({
                url: "{{url('admin/locations/fetch-cities')}}",
                type: "POST",
                data: {
                    province_id: idProvince,
                    _token: '{{csrf_token()}}'
                },
                dataType: 'json',
                success: function (result) {
                    $('#city-dropdown').html('<option value=""> انتخاب شهر </option>');
                    $.each(result.cities, function (key, value) {
                        $("#city-dropdown").append('<option value="' + value
                            .id + '">' + value.name + '</option>');
                    });
                    $('#region-dropdown').html('<option value="">انتخاب منطقه</option>');
                }
            });
        });
      $('#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="status">غیرفعال</option>');
                    $.each(res.regions, function (key, value) {
                        $("#region-dropdown").append('<option value="' + value
                            .id + '">' + value.name + '</option>');
                    });
                }
            });
        });

    });

ثبت پرسش جدید

به همدیگه کمک کنیم

به Paradox کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام