我有一个视图,该视图具有用于选择搜索参数(例如按类别搜索)的形式,我正在使用功能名称search_by_category()
加载该视图。此函数获取类别并将其传递给视图,以便视图可以在下拉列表中填充所有类别。该表单将转到一个新的提交函数,并且该函数将按类别进行记录,但是我将失去该新函数中的搜索表单,如何在一个视图中将两个表单放在一起。
代码:
public function select_by_category()
{
$a = getcategories();
return view('show_categories_and_form', $a);
}
public function get_form_record(Request $request)
{
$a = $request->input('category_id');
$b = get_record_as_per_category($a);
return view('show_categories_and_form', $b);
}
如果我加载view('show_categories_and_form', $b)
,它将不会显示类别,还是我必须在此函数中再次获取类别?
@include('header_file')
<form method="post" action="{{ URL::to('/get_form_record') }}">
<!-- <div class="form-group">
<label for="name">Search By Link:</label>
<input type="text" class="form-control" name="link"/>
</div> -->
<div class="form-group">
@csrf
<label for="price">Search By Category:</label>
<select class="form-control" name="category">
<option value="">Select Category</option>
@foreach($getCategories as $getcats)
<option value="{{$getcats->id}}">{{$getcats->category_name}} </option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Search</button>
</form>
@include('footer_file')
答案 0 :(得分:0)
尝试先检查$ b。尝试将其返回以查看结果。
如果为空,则错误是来自get_record_as_per_category();
如果它不为空,则错误是由$ b的结果引起的。 我假设$ a包含对象,而$ b包含数组。
答案 1 :(得分:0)
有多种方法可以实现所需的效果。
您可以重新加载整个表单,这意味着每次都重新加载类别以及同一功能中的get_record_as_per_category()
。这将以一种视图提供给您,并且是最简单的概念。
您还可以加载每条记录(所有类别),并从头开始将其发送到页面 ,以及上面示例代码中已经存在的所有类别。然后,当用户更改类别时,您可以使用JavaScript / jQuery隐藏所有不正确的记录,并仅显示所选类别的正确记录。
我认为与您想要的内容最接近的方法是再拥有一个“包含”文件(就像您对页眉和页脚所做的那样)。因此,顶部将保持与您现在拥有的相同-相同的形式。然后,在您的类别表单和页脚之间,包括这个新部分……我们称其为selected_records。当用户更改类别时,您只需要通过ajax调用重新加载表单的selected_records部分。
这将是这样的:
@include('header_file')
<form method="post" action="{{ URL::to('/get_form_record') }}">
// Your code as above
</form>
<div id=chosen_guts>
@include('chosen_records')
</div>
@include('footer_file')
<script>
//pseudo code
ajax{
call to get_form_record();
success(successHtml):
$("#chosen_guts").html(successHtml);
}
</script>
然后,因为您已经为选定的记录创建了一个视图,所以您可以轻松地用正确的记录仅捕获该视图以返回到ajax调用:
public function get_form_record(Request $request)
{
$a = $request->input('category_id');
$b = get_record_as_per_category($a);
// for the ajax call, we just return the guts, not the form
return view('chosen_records', $b);
}
对于第一个视图,从第一次显示该页面开始,您需要确定是否要为“默认”类别包括一组记录以显示在selected_records部分中。如果是这样,则在初始函数select_by_category()
中,您需要包括调用以获取这些记录:
$b = get_record_as_per_category($someDefaultCategory);
很多选择,取决于您的适应程度。
HTH