با سلام من رابطه استان و شهر را به صورت یک به چند پیاده سازی کردم اما تو قسمت کدهای کنترل و ایجکس موندم ممکنه راهنمایی کنید؟
درود بر شما ،
اول یک 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 و غیره هم می تونی توی کد تغییر بدی
@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
?????
درود بر شما
تفاوتی نداره ،فقط توی قسمت url آدرس رو تغییر بده و یک ای دی هم که باید تو اون متد دریافت کنی.
البته پیشنهاد می کنم توی متد create این کار رو انجام ندی
مثلا : url: '/getCities/' + province
معذرت میخوام سوال من هم این هست چطور تو روت ریسورس یه ایدی پاس بدم؟و تو متد createدریافت کنم
@assadiehsan
از کتابخونه زیر استفاده کنید و راحت باشید :
https://github.com/SaliBhdr/typhoon-iran-cities
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟