具有无限子类别的下拉嵌套类别 -> Ajax / Laravel
Dropdown nested categories with unlimited subcategories -> Ajax / Laravel
我正在尝试使用以下代码创建嵌套下拉列表类别:
我的数据库-> Table product_categories 字段:
-ID
-分类名称
-parentId-级别
-is_active
我要检索类别的产品实体:
public function getAjaxGetCategoriesDropdown() {
$categories = DB::table('product_categories')
->where('is_active', 1)
->orderBy('path', 'asc')
->select('categoryName','level','id','parentId')
->get();
$first = array();
$children = array();
foreach ($categories as $cat) {
if ($cat->level == 2) {
$first[$cat->id] = $cat;
} else if ($cat->parentId) {
$children[$cat->parentId][] = $cat;
}
}
return array('first' => $first, 'children' => $children);
}
控制器:
public function create()
{
$cats = $this->product->getAjaxGetCategoriesDropdown();
return View('products/create_product')->with(compact('products','cats'));
}
在视图中:(create.blade.php)
<div class="section">
<label class="field select">
<select id="first_cat" class="required-entry validate-select" onchange="showCat(this, 2)">
<option value=""> Select a Category </option>
<?php foreach ($tree['first'] as $cat): ?>
<option value="<?php echo $cat->id ?>"><?php echo $cat->categoryName ?></option>
<?php endforeach ?>
</select>
<i class="arrow double"></i>
</label>
<div id="sub_cat"></div>
</div>
我的脚本:
<script type="text/javascript">
var children = $H(<?php echo json_encode($tree['children']) ?>);
function showCat(obj, level) {
var catId = obj.value;
level += 1;
if ($('cat_container_' + level)) {
$('cat_container_' + level).remove();
}
if (children.get(catId)) {
var options = children.get(catId);
var html = '<select id="cat_' + catId + '" onchange="showCat(this, ' + level + ')">' + '<option value="">Select a SubCategory</option>';
for (var i = 0; i < options.length; i++) {
html += '<option value="' + options[i].entity_id + '">' + options[i].name + '</option>';
}
html += '</select>' + '<i class="arrow double"></i>';
html = '<label class="field select ' + 'cat_container_' + level + '">' + html + '</label>';
$('sub_cat').insert(html);
}
}
</script>
日志显示的当前错误是:
Undefined Variable Tree in create.blade.php
..代码<?php foreach ($tree['first'] as $cat): ?>
我一直在 Magento 应用程序上成功使用此代码,但现在将相同的方法移植到 Laravel 没有显示结果。任何帮助表示赞赏。
改变
foreach($tree ...
至
foreach($cats ...
在您的视图文件中。
我正在尝试使用以下代码创建嵌套下拉列表类别:
我的数据库-> Table product_categories 字段: -ID -分类名称 -parentId-级别 -is_active
我要检索类别的产品实体:
public function getAjaxGetCategoriesDropdown() {
$categories = DB::table('product_categories')
->where('is_active', 1)
->orderBy('path', 'asc')
->select('categoryName','level','id','parentId')
->get();
$first = array();
$children = array();
foreach ($categories as $cat) {
if ($cat->level == 2) {
$first[$cat->id] = $cat;
} else if ($cat->parentId) {
$children[$cat->parentId][] = $cat;
}
}
return array('first' => $first, 'children' => $children);
}
控制器:
public function create()
{
$cats = $this->product->getAjaxGetCategoriesDropdown();
return View('products/create_product')->with(compact('products','cats'));
}
在视图中:(create.blade.php)
<div class="section">
<label class="field select">
<select id="first_cat" class="required-entry validate-select" onchange="showCat(this, 2)">
<option value=""> Select a Category </option>
<?php foreach ($tree['first'] as $cat): ?>
<option value="<?php echo $cat->id ?>"><?php echo $cat->categoryName ?></option>
<?php endforeach ?>
</select>
<i class="arrow double"></i>
</label>
<div id="sub_cat"></div>
</div>
我的脚本:
<script type="text/javascript">
var children = $H(<?php echo json_encode($tree['children']) ?>);
function showCat(obj, level) {
var catId = obj.value;
level += 1;
if ($('cat_container_' + level)) {
$('cat_container_' + level).remove();
}
if (children.get(catId)) {
var options = children.get(catId);
var html = '<select id="cat_' + catId + '" onchange="showCat(this, ' + level + ')">' + '<option value="">Select a SubCategory</option>';
for (var i = 0; i < options.length; i++) {
html += '<option value="' + options[i].entity_id + '">' + options[i].name + '</option>';
}
html += '</select>' + '<i class="arrow double"></i>';
html = '<label class="field select ' + 'cat_container_' + level + '">' + html + '</label>';
$('sub_cat').insert(html);
}
}
</script>
日志显示的当前错误是:
Undefined Variable Tree in create.blade.php
..代码<?php foreach ($tree['first'] as $cat): ?>
我一直在 Magento 应用程序上成功使用此代码,但现在将相同的方法移植到 Laravel 没有显示结果。任何帮助表示赞赏。
改变
foreach($tree ...
至
foreach($cats ...
在您的视图文件中。