laravel - 编辑表单时未获取动态依赖列表值
问题描述
我正在使用动态相关下拉列表。子类别取决于类别。在我的编辑视图中,我想在我的表单中获取我之前选择的下拉值。但我只获得选定的类别..值。但不是子类别值...我不知道如何解决它
<div class="form-row col-md-12">
<div class="form-group col-md-6" style="margin-left: 5px">
<label for="inputError" class="control-label">Category</label>
<select class="chosen-select form-control" name="category">
<option value="">Select category</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}" {{$product->category_id==$category->id?'selected':''}}>{{$category->category_name}}</option>
@endforeach
</select>
{{$errors->first('category')}}
</div>
<div class="form-group col-md-6" style="margin-left: 5px" >
<label for="inputError" class="control-label">Sub Category</label>
<select class=" chosen form-control" id="subcategory" name="subcategory"></select>
{{$errors->first('subcategory')}}
</div>
</div>
这是我的ajax代码
<script type="text/javascript">
$(document).ready(function() {
$('select[name="category"]').on('change', function() {
var stateID = $(this).val();
console.log(stateID)
if(stateID) {
$.ajax({
url: '/myform/ajax/'+stateID,
type: "GET",
dataType: "json",
success:function(data) {
$('select[name="subcategory"]').empty();
$.each(data, function(key, value) {
$('select[name="subcategory"]').append('<option value="' + key + '">'+ value +'</option>');
});
}
});
}else{
$('select[name="subcategory"]').empty();
}
});
});
</script>
控制器
public function myformAjax($id)
{
$subcategories = DB::table("subcategories")
->where("category_id",$id)
->pluck("subcategory_name","id");
return json_encode($subcategories);
}
public function edit($id)
{
$categories = Category::latest()->get();
$product = Product::findOrFail($id);
return view('product.edit',compact('categories','product'));
}
路线
Auth::routes();
Route::group(['middleware' => 'auth'], function (){
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('group', 'GroupController');
Route::resource('company', 'CompanyController');
Route::resource('slider', 'SliderController');
Route::resource('category', 'CategoryController');
Route::resource('subcategory', 'SubcategoryController');
Route::resource('product', 'ProductController');
});
Route::get('myform/ajax/{id}',array('as'=>'myform.ajax','uses'=>'HomeController@myformAjax'));
解决方案
DB::table...
将返回一个对象,但您需要有一个数组,因此您可以在调用之后使用 orall()
或,如下所示:toArray()
pluck(...)
$subcategories = DB::table("subcategories")->where("category_id",$id)->pluck("subcategory_name","id")->all();
推荐阅读
- r - 在 ggplot 的边缘创建不变的位置比例标签
- sql - 连接没有真正跟随数字的行
- node.js - 使用 EJS 模板引擎在 Node.js 中提交表单后,我不断收到验证器错误
- r - 限制相关矩阵的小数位数
- command-line - 有没有办法拦截子进程的输出,或者在第一次输入到标准输入后从“继承”更改为“管道”?
- msal - 无法使用用户名/密码流通过 Java 后端进行身份验证
- google-cloud-shell - 如何不在 cloudshell 中的项目中进行编辑?
- android - 使用 GradientDrawable 使渐变从远离视图的末端开始
- graphql - Apollo 联合网关:在编写超图时包含本地模式
- ruby - 在具有相同 utf-8 编码的 Ruby 中比较相同的字符串失败