我在控制器中有代码来获取商店的城市,同时我想获取此商店的类别。一切正常,但类别结果如下:
["Taco Bar", "Yogurt Bar", "Hot Breakfast", "Utensils", "Beverages", "Desserts", "Salads", "Ala Carte", "Party Essentials"]
如何在HTML表中查看这些类别?
public function getCity($id)
{
$store_city = Storeinfo::where('store_id', $id) -> pluck('store_city');
$categories = Category::where('store_id', $id) -> pluck('Category_name');
return Response::json(array(
'store_city' => $store_city,
'categories' => $categories,
));
}
success: function(data) {
$('#store_city').val(data.store_city);
console.log(data.categories);
}
答案 0 :(得分:0)
尝试这样:
JS:
success:function(data){
$('#store_city').val(data.store_city);
var tableCOntent = "<table border='1'><tr><th>Categories</th></tr>";
data.categories.forEach(function(item){
tableCOntent += "<tr><td>" + item + "</td></tr>";
});
tableCOntent += "</table>";
$('.table-data').html(tableCOntent);
}
HTML:
<div class="table-data"></div>
答案 1 :(得分:0)
您可以创建一种动态组件。首先,在views文件夹中创建一个目录,并将其命名为“ dynamicComponents”(我通常这样命名),然后在该文件夹中创建一个刀片文件名,无论其名称如何(例如CategoriesTable.blade.php)。该文件应如下所示:
@foreach ($categories as $category)
<tr>
<td>{{$category->name}}</td>
</tr>
@endforeach
<style>
//All the style you need for this component
</style>
<script>
$(document).ready(function () {
//All the javascript you need for this component
});
</script>
主文件(要显示表格的文件)应如下所示:
<table>
<thead>
<tr>
<th>Categories</th>
</tr>
</thead>
<tbody class="dynamicCompnentWrapper">
@include('dynamicComponents.categoriesTable')
</tbody>
</table>
还必须创建一个如下所示的javascript函数:
function reload(url, method, wraperClass,id){
return $.ajax({
type: 'GET',
url: url + '/' + method + '/' + id,
success: function (result) {
$('.' + wraperClass).html(result.html);
}
});
}
在控制器类中,您必须添加一个方法名称,该名称随您的需要而不同(通常我将其命名为 重新加载),它看起来像:
public function reloadCategoriesTable($id)
{
if (request()->ajax()) {
$categories= Category::where('store_id', $id)->get();
$html = view('dynamicComponents.categoriesTable', compact('view', 'categories', 'folder'))->render();
return response()->json(compact('html'));
}
return view('errors.404');
}
您还需要为添加的控制器功能创建路由。
因此,当用户第一次加载页面时,将使用getCity()或甚至更好的index方法中的数据显示表,并且无论何时进行更改,都可以调用javascript函数(
reload('your base url ex. www.blabla.com', ' function that you created in controller in this case reloadCategoriesTable', 'wrapper class from table body dynamicCompnentWrapper',id_of_category)
),此函数将调用控制器中的方法并重新加载(每次从javascript调用reload()函数时,都会“重新绘制”表)。