我有一个显示产品列表的页面。每个产品属于一个部分,该部分具有各种子部分,这些部分具有各种类别,并且反过来具有各种子类别。我使用这些属性来过滤产品,并且只有在提交前一个产品时才会出现这些属性(仅当定义了部分时才显示子部分,并且仅显示属于该特定部分的子部分)。我正在使用查询字符串来制作我的过滤器,如下所示:
http://www.website.com/products?section=21&subsection=57&category=92
当用户在页面中选择过滤器时,这很有效。首先选择一个部分,然后使用子部分重新加载页面。然后他选择一个子部分,页面重新加载子类别,依此类推。
我的问题是:我希望它以某种方式工作,例如,如果我取消选择该部分,它将返回没有查询字符串的视图,或者至少将其他值清空。目前它返回如下:
http://www.website.com/products?section=&subsection=57&category=92
我已尝试仅使用预定义的输入返回视图,例如剖面,以防小部分未定义:
if(isset($filter['subsection']) && $filter['subsection'] != '') {
$category = new ProductCategory;
$categories = $category->where('subsection', '=', $filter['subsection'])->lists('name', 'id');
$view = $view->with('categories', $categories);
}
else {
return $view->with(Input::except('subsection','category','subcategory'));
}
这会进入else块,但URL仍会获取所有查询字符串及其先前的值。我也试过Input::only
,但结果相同。
我应该采用另一种方式,也许是POST吗?是否有方法在使用withInput()
发回之前清除输入?感谢。