我有一个带连接的表,并且分组,所以我在表中有多个项目,如:
namecat nameprod
1 a
1 b
1 c
2 a
2 a
2 c
我想在选择下拉菜单中显示,因为是我在$ products变量中的查询的结果,我将它传递给了我的视图
return View::make('admin.view')->with('products',$products);
然后在我的admin.view
中@foreach ($products as $product)
{{Form::select('categorie', array(
$product-namecat => array($product->nameprod => $product-nomeprod)))
}}
@endforeach
像这样,我只是为每个类别获得了很多下拉。如何使用带有namecat的粗体标题的下拉菜单,例如(1)然后是所有产品1.如laravel docs中那样:
Generating A Grouped List
echo Form::select('animal', array(
'Cats' => array('leopard' => 'Leopard'),
'Dogs' => array('spaniel' => 'Spaniel'),
));
我尝试使用2个foreach:
@foreach ($products as $product)
@foreach ($product->namecat as $category)
{{Form::select('categorie', array(
$category => array($product->nameprod => $product-nomeprod)))
}}
@endforeach
@endforeach
但是它说试图获取非对象的属性(BTW我看到有人在foreach中使用这种构建但是我没办法$ product-> namecat在foreach中工作它说无效为foreach()提供的参数为什么?)
实际上我(以正常的编程方式)记住了这样的事情:
echo Form::select('animal', array(
foreach ($product->nomecat as $cat)
$cat => array( foreach ($product->nameprod as $prod)
$prod => $prod
endforeach),
endforeach));
答案 0 :(得分:0)
我假设您的 $ products 数组看起来像
$products = [
(object) ['namecat' => 1, 'nameprod' => 'a'],
(object) ['namecat' => 1, 'nameprod' => 'b'],
(object) ['namecat' => 2, 'nameprod' => 'a'],
(object) ['namecat' => 2, 'nameprod' => 'b'],
// ...
]
要使 $ products 数组生效的分组列表,您需要进行一些调整。一种简单的方法是将新的变量 $ categories 带入游戏中,例如,您可以填写控制器。
$categories = [];
foreach ($products as $product) {
if (!isset($categories[$product->namecat])) {
$categories[$product->namecat] = [];
}
array_push($categories[$product->namecat], $product->nameprod);
}
View::make('leView')->with('categories' => $categories);
:
因为$ categories看起来像这样:
$categories[1] => ['a', 'b']
$categories[2] => ['a', 'b']
你应该可以使用Form::select
{{ Form::select('category', $categories) }}