m.mahmoudi
2 سال پیش توسط m.mahmoudi مطرح شد
5 پاسخ

انتخاب شهر بر طبق استان در لاراول

با سلام من رابطه استان و شهر را به صورت یک به چند پیاده سازی کردم اما تو قسمت کدهای کنترل و ایجکس موندم ممکنه راهنمایی کنید؟


ثبت پرسش جدید
احسان اسدی
تخصص : برنامه نویس Back-end
@assadiehsan 2 سال پیش مطرح شد
0

درود بر شما ،
اول یک Route ایجاد کن و توی کنترلر کد زیر رو قرار بده :

public function getCities($id)
    {
        $province = Province::find($id);
        if (!is_null($province)) {
            return json_encode($province->cities);
        }
        abort(404);
    }

و کد ایجکس هم به این صورت میشه :

$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $('#province').change(function () {
            var province = $('#province').val();
            $.ajax({
                type: "GET",
                url: '/getCities/' + province,
                data: {province: province},
                dataType: "json",
                success: function (response) {
                    $('#city').html("");
                    $.each(response, function (index, val) {
                        $('#city').append("<option value='" + response[index].id + "'>" + response[index].name + "</option>");
                    })
                },
                error: function () {
                    $('#city').html("");
                }
            });
        });

ای دی select و غیره هم می تونی توی کد تغییر بدی


m.mahmoudi
@m.mahmoudi7276 2 سال پیش مطرح شد
0

@assadiehsan
اگر کنترلر به شکل resource باشه چطور میشه این کار رو انجام داد؟
ممنون میشم راهنمایی داشته باشید.
table province

 public function up()
    {
        Schema::create('provinces', function (Blueprint $table) {
            $table->id();
            $table->string('province');
            $table->timestamps();
        });
    }

table city

  public function up()
    {
        Schema::create('cities', function (Blueprint $table) {
            $table->id();
            $table->foreignId('province_id')->constrained('provinces')->cascadeOnUpdate()->cascadeOnDelete();
            $table->string('city');
            $table->timestamps();
        });
    }

model province

public function cities()
    {
        return $this->hasMany(City::class);
    }

model city

 public function province()
    {
        return $this->belongsTo(Province::class);
    }

route

Route::resource('hotel',HotelController::class);

HotelController

    public function create()
    {
// ذخیره استان و شهر
    }

hotel-create.blade

    <div  class=form-group row">
                                    <div class="col-6">
                                        <select name="province" class="form-control" id="province">
                                            @foreach ($provinces as $province)
                                                <option value="{{ $province->id }}">{{ $province->province }}</option>
                                            @endforeach
                                        </select>

                                        <select name=“city” class="form-control" id="city">
                                                <option value=""></option>
                                        </select>
                                    </div>
  </div>

ajax

?????

احسان اسدی
تخصص : برنامه نویس Back-end
@assadiehsan 2 سال پیش مطرح شد
0

درود بر شما
تفاوتی نداره ،‌فقط توی قسمت url آدرس رو تغییر بده و یک ای دی هم که باید تو اون متد دریافت کنی.

البته پیشنهاد می کنم توی متد create این کار رو انجام ندی

مثلا : url: '/getCities/' + province


m.mahmoudi
@m.mahmoudi7276 2 سال پیش آپدیت شد
0

معذرت میخوام سوال من هم این هست چطور تو روت ریسورس یه ایدی پاس بدم؟و تو متد createدریافت کنم
@assadiehsan


parsa parasteh
تخصص : Fullstack Developer
@parsaparasteh 2 سال پیش مطرح شد
0

از کتابخونه زیر استفاده کنید و راحت باشید :
https://github.com/SaliBhdr/typhoon-iran-cities


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

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