我创建了一个下拉列表来选择搜索类别。例如,当我搜索产品时,我搜索Shoes for MEN,当加载视图页面时,项目重置为默认值
我希望该类别保持我选择的范围
<form action="<?php echo Yii::app()->baseUrl; ?>/search" method="GET" class="form-inline form-section-2 row fadeInDown animated">
<div class="col-sm-5 form-group">
<input type="text" name="loc" class="form-control" id="loc" value="<?php echo $locationdet ; ?>" placeholder="Enter Your Keyword">
</div>
<div class="col-sm-4 form-group" >
<select name="cat" class="form-control selectpicker">
<option>Select Category</option>
<option value = '0'>Men</option>
<option value = '1'>Women</option>
</select>
</div>
<div class="col-sm-3 form-group">
<button type="submit" class="btn btn-default btn-new">Search Products</button>
</div>
</form>
答案 0 :(得分:1)
试试这个:
<option value = '0' <?php if(isset($_GET['cat']) && $_GET['cat'] == '0') echo "selected" ?>>Men</option>
<option value = '1' <?php if(isset($_GET['cat']) && $_GET['cat'] == '1') echo "selected" ?>>Women</option>
答案 1 :(得分:1)
使用
echo CHtml::dropDownList('cat',isset( $_REQUEST['cat'] ) ? $_REQUEST['cat'] : NULL, array('0'=>'Men', '1'=>'Women'),
array('empty'=>'Select Category', 'class' => 'form-control selectpicker'));
实现yii风格,
欢呼声
答案 2 :(得分:0)
您必须通过控制器将所选选项传回视图。
在控制器中你需要这样的东西:
$this->render('viewName', array('name' => 'valueOfTheList'))
然后在视图中您可以使用
<option value = '0' <?php if($name == '0') echo "selected" ?>>Men</option>
<option value = '1' <?php if($name == '1') echo "selected" ?>>Women</option>
然而。因为你正在使用Yii。我建议你看看CHTML::dropDownList()。然后你可以做类似
的事情<?php echo CHtml::dropDownList('name', $select,
array('M' => 'Male', 'F' => 'Female'));
这真的是更接近这类事情的Yii方式。
答案 3 :(得分:0)
Yii实现此功能的方法。
您可以通过将用户输入值设置为“模型”属性来保持表单状态。为此,您可以使用CFormModel
来实现,就像YII的默认登录页面一样。以下是一个示例示例。
为您的搜索创建表单模型(SearchForm.php)并将其放在models
文件夹中。
class SearchForm extends CFormModel
{
public $search_key;
public $search_cat;
public function rules()
{
return array(
array('search_key,search_cat', 'required'),
);
}
}
假设我正在使用SiteController
。我想在我的索引页面中显示此搜索表单。当我提交表单时,它将提交search
行动
class SiteController extends Controller
{
public function actionIndex()
{
$searchModel=new SearchForm();
$searchModel->search_key;
$searchModel->search_cat;
$this->render('index',array('searchModel'=>$searchModel));
}
public function actionSearch()
{
$searchModel=new SearchForm();
if($_POST['SearchForm'])
{
$searchModel->attributes=$_POST['SearchForm'];
}
$this->render('search',array('searchModel'=>$searchModel));
}
}
$searchModel->attributes=$_POST['SearchForm'];
这就是我将用户输入重置为model.So,在您的视图中,表单将显示用户输入值。
在视图中调用此表单
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'search-form',
'enableClientValidation' => true,
'action'=>array('default/search'), //Submiting my form to Search action
));
?>
<?php echo $form->textField($searchModel, 'search_key'); ?>
<?php
$htmlOptions = array('size' => '1', 'prompt' => 'Select');
$list = array('0' => 'Men', '1' => 'Women'); // You can load your Categories from the Database table/Model.
echo $form->dropDownList($searchModel, 'search_cat', $list, $htmlOptions);
?>
<?php echo CHtml::submitButton('Search'); ?>
<?php $this->endWidget(); ?>
希望,这将有助于您更好地练习。