我正在尝试为虚拟商店实施kohana排序过滤器,这意味着每当我想要对某些产品进行排序(价格等)之后,我必须只从列表中选择排序标准。我不想在另一个视图中实现排序,因此当选择排序选项时,不得将其重定向到另一个页面。
所以我有一个清单:
<form name="ordering" id="ordering" method="post" action="">
<input type="hidden" id="ordering" value="0">
<select id="ordering" name="ordering">
<option value=0>All products</option>
<option value=1>Ascending Price</option>
<option value=2>Descending price</option>
</select>
</form>
我希望在控制器中获取该隐藏值,以便能够在视图中操作它。 (这是对的吗?) 我需要这个变量才能进行切换并确定用户选择了哪个排序选项。
在控制器中,我尝试用$ ordering = $ _POST ['ordering']'捕获'变量;但我收到错误,或者
if (Request::$is_post){
$ordering = $_POST['ordering'];
}
但它永远不会到达那里(在那堆代码中)。
我哪里错了?
谢谢你!答案 0 :(得分:1)
鉴于documentation of Request object和this example,您可以在控制器中尝试以下操作:
if (Request::$method == 'POST') {
$ordering = $_POST['ordering'];
// ...
}
注意:建议在HTML标记参数周围添加引号
<option value="0">All products</option>
而不是
<option value=0>All products</option>
HTH
答案 1 :(得分:1)
@dana:看看 - http://www.ajaxlines.com/ajax/stuff/article/jquery_and_kohana_unobtrusive_ajax.php - 了解如何在用户提交表单时如何在不刷新页面的情况下执行您想要的操作的示例和方向。
答案 2 :(得分:1)
首先,检查您的HTML代码,您有3个名为“ordering”的ID。 我不知道你是如何编写你的Javascript东西的,但如果不起作用我也不会感到惊讶,ID应该是唯一的。
无论如何,你说你想获得隐藏字段的值,但它没有任何名称。因此,您无法通过PHP访问它(除非您使用Javascript进行访问)
根据Kohana 3.1(最后一条评论链接3.0文档),要获得价值,您应该执行以下操作:
$this->request->post('ordering');
您正在使用哪个版本的Kohana?