我使用的是Laravel框架,我有两个下拉列表,其中两个都是从数据库表中读取数据,
第一个从表中读取所有记录并将其填入选择列表
这是我的代码:
<div class="form-group">
{{Form::select('advertiserName', Advertiser::all()->lists('advertiserName', 'advertiserId'))}}
</div>
它会显示广告客户名称并传递广告客户的ID。
第二个下拉列表我希望它显示与上述所选广告客户相关的所有品牌。
这是我的代码:
<div class="form-group">
{{Form::select('brandName', Brand::where('advertiserId', '=', '3')->lists('brandName', 'id'))}}
</div>
advertiserId是广告客户的外键,3必须替换为您在第一个下拉列表中选择的advertiserId,基本上我想将变量从第一个选择列表传递到第二个
谢谢
答案 0 :(得分:0)
基本上,您需要使用AJAX根据从第一个下拉列表中选择的选项获取Second Dropdown的数据。
在特定div中创建第二个下拉列表并在ajax调用之后从ajax响应中替换div的contets。
答案 1 :(得分:0)
如上所述,实现此目的的最佳方法是通过AJAX请求。以下是如何实现此功能的示例。
首先创建一个视图partial,用于呈现品牌的选择框。像这样的东西(这段代码基于Bootstrap 3):
{{ Form::label('brandName', 'Brand', ['class' => 'control-label col-sm-2']) }}
<div class="col-sm-10">
{{ Form::select('brandName', $brands, null, ['class' => 'form-control']) }}
</div>
现在,在routes.php文件中添加以下路由:
Route::get('brand-list/{id}', ['as' => 'brands', 'uses' => 'BrandsController@brandList']);
在你的BrandsController.php文件(或你用来处理它的任何控制器)中添加一个名为brandList()的方法;
public function brandList($id)
{
// Return an array of brands for the selected advertiser name ID if available
$brands = $this->brand->where('advertiserId', $id)->lists('brandName', 'id'); // I'm using dependency injection here so you'll need to assign your Brand model to the $this->brand property of this classes constructor method
if ( ! isset($brands))
{
$brands = ['No brands available' => null]; // return a generic array containing 1 item with a value of null so you can handle it in your view. You could also return something else here such a boolean of false and then handle that in your AJAX request to return an error or info message
}
return View::make('brands.partials.select', compact('brands'));
}
现在为AJAX:
$('#advertiserName').change(function(e) {
var advertiserId = $(this).val();
var url = '/brand-list/' + advertiserId;
$.get(url, function(data) {
$('.brands').html(data); // The returned view with the brand select input
});
});
然后在初始表单视图中,您将要创建一个带有.brands类的空div,我们将使用它来填充通过我们的AJAX请求返回的HTML。如果您使用Bootstrap 3,例如:
<div class="form-group brands"></div>
这应该可以按你的需要工作,但我没有测试过这段代码,所以如果你有任何问题请告诉我。显然,这是基于可用信息的通用代码,并且有许多方法可以为猫提供皮肤。