Реализация фильтра сортировки Кохана - PullRequest
1 голос
/ 05 марта 2011

Я пытаюсь реализовать фильтр сортировки кохана для виртуального магазина. Это означает, что всякий раз, когда я хочу отсортировать некоторые товары (после цены и т. Д.), Я должен выбирать только критерии сортировки из списка. я не хочу реализовывать сортировку в другом представлении, поэтому при выборе варианта сортировки его нельзя перенаправлять на другую страницу.

так что у меня есть список:

<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'];         
    }

но он никогда не попадет туда (при этом наборе кода).

где я не прав?

спасибо!

Ответы [ 3 ]

1 голос
/ 06 марта 2011

@ dana: посмотрите на - http://www.ajaxlines.com/ajax/stuff/article/jquery_and_kohana_unobtrusive_ajax.php - пример и некоторые указания о том, как делать то, что вы хотите, без обновления страницы, когда пользователь отправляет форму.

1 голос
/ 06 марта 2011

Во-первых, проверьте ваш HTML-код, у вас есть 3 идентификатора с именем «заказ».Я не знаю, как вы написали свой Javascript, но я не удивлюсь, если это не сработает, идентификаторы должны быть уникальными.

В любом случае, вы говорите, что хотите получить значение скрытогополе, но у него нет имени.Таким образом, вы не можете получить к нему доступ через PHP (если вы не делаете это с помощью Javascript)

Согласно Kohana 3.1 (последний комментарий был связан с документацией 3.0), чтобы получить значение, вы должны сделать следующее:1005 *

$this->request->post('ordering');

С какой версией Kohana вы работаете?

1 голос
/ 05 марта 2011

Учитывая документацию Запрос объект и этот пример , вы можете попробовать следующее в вашем контроллере:

if (Request::$method == 'POST') {    
    $ordering = $_POST['ordering'];
    // ...
}

Примечание: рекомендуется ставить кавычки вокруг параметров HTML-тега

<option value="0">All products</option>

вместо

<option value=0>All products</option>

НТН

...