控制器中的函数未使用 Laravel 8 调用
Function in controller isn't called using Laravel 8
我正在尝试为国家和城市建立一个动态下拉列表,因此:
我有以下看法:
<div class="form-row">
<div class="col-sm-6">
<label>Pays</label>
<select class="form-control select2-single" data-width="100%"
name="pays" id="pays">
<option label=" "> </option>
@foreach($countries as $country)
<option data-id="{{$country->id}}" value="{{$country->name}}">
{{$country->name}}</option>
@endforeach
</select>
</div>
<div class="col-sm-6">
<label>Ville</label>
<select class="form-control select2-single" data-width="100%"
name="ville" id="ville">
</select>
</div>
</div>
以及以下脚本:
<script type="text/javascript">
$(document).ready(function(){
$("#pays").change(function(){
/* let country_id = this.value;*/
let country_id = $(this).find("option:selected").data("id");
$.get('/getState?country='+country_id,function(data){
$("#ville").html(data);
});
});
/* });*/
</script>
我的控制器:
public function getAllStates()
{
$country_id = request('country');
$states = State::where('country_id',$country_id)->get();
/* dd($states);*/
$option = "<option value = ''> Select State</option>";
foreach($states as $state){
$option.= '<option value = "'.$state->name.'">'.$state->name.'</option>';
}
return $option;
}
以及以下路线:
Route::group(['middleware' => ['auth','role:admin']], function() {
Route::get('/getState/{country}','App\Http\Controllers\CastingController@getAllStates');
});
问题是函数 getAllStates
没有被调用,我的路线有问题吗?
您的脚本使用查询参数调用路由,而路由是使用路由段定义的。
所以你必须改变你的 JavaScript:
$(document).ready(function(){
$("#pays").change(function(){
/* let country_id = this.value;*/
let country_id = $(this).find("option:selected").data("id");
$.get('/getState/'+country_id,function(data){
$("#ville").html(data);
});
});
/* });*/
我正在尝试为国家和城市建立一个动态下拉列表,因此:
我有以下看法:
<div class="form-row">
<div class="col-sm-6">
<label>Pays</label>
<select class="form-control select2-single" data-width="100%"
name="pays" id="pays">
<option label=" "> </option>
@foreach($countries as $country)
<option data-id="{{$country->id}}" value="{{$country->name}}">
{{$country->name}}</option>
@endforeach
</select>
</div>
<div class="col-sm-6">
<label>Ville</label>
<select class="form-control select2-single" data-width="100%"
name="ville" id="ville">
</select>
</div>
</div>
以及以下脚本:
<script type="text/javascript">
$(document).ready(function(){
$("#pays").change(function(){
/* let country_id = this.value;*/
let country_id = $(this).find("option:selected").data("id");
$.get('/getState?country='+country_id,function(data){
$("#ville").html(data);
});
});
/* });*/
</script>
我的控制器:
public function getAllStates()
{
$country_id = request('country');
$states = State::where('country_id',$country_id)->get();
/* dd($states);*/
$option = "<option value = ''> Select State</option>";
foreach($states as $state){
$option.= '<option value = "'.$state->name.'">'.$state->name.'</option>';
}
return $option;
}
以及以下路线:
Route::group(['middleware' => ['auth','role:admin']], function() {
Route::get('/getState/{country}','App\Http\Controllers\CastingController@getAllStates');
});
问题是函数 getAllStates
没有被调用,我的路线有问题吗?
您的脚本使用查询参数调用路由,而路由是使用路由段定义的。
所以你必须改变你的 JavaScript:
$(document).ready(function(){
$("#pays").change(function(){
/* let country_id = this.value;*/
let country_id = $(this).find("option:selected").data("id");
$.get('/getState/'+country_id,function(data){
$("#ville").html(data);
});
});
/* });*/