Я работаю над формой поиска, у которой есть выпадающий фильтр меню. И сайт создан Yii.Как отобразить выпадающее меню фильтра выбранного значения после отправки формы?
Моя форма фильтра выглядит следующим образом, прежде чем он представлен: PIC 1
форму при выборе фильтров: PIC 2
Но после того, как я нажимаю кнопку filter
он приходит снова, как это: PIC3
Но я хочу, чтобы форма оставалась PIC 2
aft er Я представляю форму, когда она показывает результаты.
Моя форма:
<div class="row">
<div style="float: left">
<label class="form_controller required">By Brand</label>
<select style="width: 148px;" id="select_options" name="SCDcustomer_contacts_cms[brand_select_option]">
<option value="none">Select an option</option>
<option value="brand_preference">Brand Preference</option>
<option value="brand_purchased">Brand Purchased</option>
</select>
</div>
<div id="select_a_brand" name="select_a_brand">
<?php echo $form->dropDownList($model,'brand_id', gGetBrandList('brand_id', 'brand_id, brand_name'), array('prompt'=>'Select a brand')); ?>
</div>
<script type="text/javascript">
$(document).ready(function(){
jQuery('#select_a_brand').hide();
$("#select_options").change(function(){
$("select option:selected").each(function(){
if(($(this).attr("value")=="brand_preference") || ($(this).attr("value")=="brand_purchased")){
$("#select_a_brand").show();
}
if($(this).attr("value")=="none"){
$("#select_a_brand").hide();
}
});
});
});
</script>
</div>
функция Правила является:
public function rules()
{
return array(
array('scd_cust_id,cust_id,order_first_name,order_surname,order_email,order_postcode, brand_id, brand_select_option', 'safe', 'on'=>'search'),
);
}
Форма фильтра:
if(!empty($filter)) {
if ($this->brand_select_option == "brand_preference") {
$criteria->select .= ', COUNT(*) as brand_preference';
$criteria->join .= ' INNER JOIN order_table ot ON ot.billing_contactid = t.contactid';
$criteria->join .= ' INNER JOIN order_item oi ON ot.scd_order_id = oi.scd_order_id';
$criteria->join .= ' INNER JOIN johnanthony_rstest.product p ON p.product_id = oi.product_id';
$criteria->condition .= (!empty($criteria->condition) ? ' AND ' : '') . 'p.brand_id=:brand_id';
$criteria->group = 't.contactid';
$criteria->order = 'COUNT(*) DESC';
$criteria->params = array(':brand_id'=>$this->brand_id);
$paging['pagination']['route']='report/index?SCDcustomer_contacts_cms[brand_id]=' . $this->brand_id;//For ajax pagination URL
}
if ($this->brand_select_option == "brand_purchased") {
$criteria->select .= ', SUM(product_price) AS brand_purchased';
$criteria->join .= ' INNER JOIN order_table ot ON ot.billing_contactid = t.contactid';
$criteria->join .= ' INNER JOIN order_item oi ON ot.scd_order_id = oi.scd_order_id';
$criteria->join .= ' INNER JOIN johnanthony_rstest.product p ON p.product_id = oi.product_id';
$criteria->condition .= (!empty($criteria->condition) ? ' AND ' : '') . 'p.brand_id=:brand_id';
$criteria->group = 't.contactid';
$criteria->order = 'SUM(product_price) DESC';
$criteria->params = array(':brand_id'=>$this->brand_id);
$paging['pagination']['route']='report/index?SCDcustomer_contacts_cms[brand_id]=' . $this->brand_id;//For ajax pagination URL
}
}
Ajax файл:
if (!empty($model->brand_id) && ($model->brand_select_option == "brand_preference")) {
array_push($options['columns'], array(
'name'=>'brand_preference',
'filter'=>false,
'header'=>'Brand Preference (No of purchased items)',
'type'=>'raw',
'value'=>'$data->brand_preference',
));
}
if (!empty($model->brand_id) && ($model->brand_select_option == "brand_purchased")) {
array_push($options['columns'], array(
'name'=>'brand_purchased',
'filter'=>false,
'header'=>'Brand Purchased (Sum of purchased items)',
'type'=>'raw',
'value'=>'$data->brand_purchased',
));
}
Спасибо за это. Это должно быть решением. Но я не могу просто скопировать его и работать. Я получаю сообщение об ошибке. Я помещаю код как это в мою форму вместо кнопки: http://tinypic.com/r/2rfzy2d/8 , и я получаю эту ошибку: ' Ошибка анализа: ошибка синтаксиса, неожиданная T_CONSTANT_ENCAPSED_STRING, ожидающая ')' в /var/www/vhosts/rstest.john-anthony.com/httpdocs/protected/modules/admincms/views/report/index.php в строке 86' –
Это не будет работать, как показано в примере. Прежде всего, я сомневаюсь, что у вас есть div или любой другой тег html с идентификатором # search-result-holder (это должно быть место, где вы html ваши результаты). В связи с этим вы должны возвращать html-данные, сгенерированные в контроллере или другом представлении через renderPartial («отчет/дополнительный просмотр-папка/результат поиска», массив ('model' => $ model), true); Назначить рендеринг частичной переменной и echo CJSON :: encode (array ('search-results' => $ assign_to_renderPartial_variable)); Конечно, перед этим вам необходимо передать brand_id (SCDcustomer_contacts_cms [brand_id]) в атрибуты. – juslintek
Мой файл вида (httpdocs \ protected \ modules \ admincms \ views \ report \ index.php) заканчивается следующим образом: http://tinypic.com/r/dqgk1d/8 и мой файл ajax (httpdocs \ protected \ modules \ admincms \ views \ report \ _ajaxContent.php): http://www.ldjf.org/_ajaxContent.zip Посмотрите на строку # 50 –