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

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

Recommended Posts

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

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

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

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>');
                    });
                }
            });
        });
 
    });

 

Share this post


Link to post
Share on other sites

معمولا برای اینکه آیتمی رو فعال یا غیرفعال کنن دو جا میشه اینکار رو انجام داد یکی در بخشی که خود آیتم ساخته شده از اونقسمت خیلی راحت میتونید یه فیلد وضعیت بذارید و فعال یا غیرفعال بودن رو انتخاب کنید تا موقع ذخیره اعمال بشه و یا در لیست مناطق که نمایش داده میشه میتونید مثلا فیلتر کنید و فقط مناطق تهران رو نمایش بدید و کنار هر منطقه یه چک باکس باشه که هر کدوم رو خواستید تیک بزنید و دو تا دکمه فعال و غیرفعال هم داشته باشید که روی هر کدوم کلیک شد مناطق انتخاب شده رو با ajax به api مورد نظر ارسال کنید و وضعیتش رو براساس کلیکی که روی دکمه فعال یا غیرفعال بوده آپدیت کنید.

اگه توضیحات بیشتری نیاز داشتید بگید بیشتر راهنمایی کنم

Share this post


Link to post
Share on other sites
در 10 ساعت قبل، saber گفته است :

معمولا برای اینکه آیتمی رو فعال یا غیرفعال کنن دو جا میشه اینکار رو انجام داد یکی در بخشی که خود آیتم ساخته شده از اونقسمت خیلی راحت میتونید یه فیلد وضعیت بذارید و فعال یا غیرفعال بودن رو انتخاب کنید تا موقع ذخیره اعمال بشه و یا در لیست مناطق که نمایش داده میشه میتونید مثلا فیلتر کنید و فقط مناطق تهران رو نمایش بدید و کنار هر منطقه یه چک باکس باشه که هر کدوم رو خواستید تیک بزنید و دو تا دکمه فعال و غیرفعال هم داشته باشید که روی هر کدوم کلیک شد مناطق انتخاب شده رو با ajax به api مورد نظر ارسال کنید و وضعیتش رو براساس کلیکی که روی دکمه فعال یا غیرفعال بوده آپدیت کنید.

اگه توضیحات بیشتری نیاز داشتید بگید بیشتر راهنمایی کنم

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

اگه میشه اینجوری لطفا راهنمایی کنید به چه صورت هست ممنون

Share this post


Link to post
Share on other sites

بله جدول منطقه باید فیلد status رو داشته باشه که بتونید فعال یا غیرفعال کنید
شما توی صفحه دو تا دکمه فعال و غیرفعال باید داشته باشید بعد شهر که انتخاب شد و لیست مناطق رو دریافت کردید به حالت لیست نمایش بدید و حالا به یه روشی مثل رنگبندی متفاوت فعال یا غیرفعال بودن هر منطقه رو هم مشخص کنید. لیست مناطق رو هم که نمایش میدید در کنار اسم هر منطقه یک input از نوع checkbox قرار بدید و value رو برابر با شناسه منطقه جاری قرار بدید بعد هر کدوم از مناطق رو که خواستید فعال یا غیرفعال کنید میتونید تیک بزنید و دکمه مورد نظر حال فعال یا غیرفعال رو کلیک کنید و عملیات مورد نظرتون رو انجام بدید

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...