如何在yii下拉列表中显示选择的选项?

时间:2015-08-05 05:20:25

标签: php yii

我创建了一个下拉列表来选择搜索类别。例如,当我搜索产品时,我搜索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>

4 个答案:

答案 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的默认登录页面一样。以下是一个示例示例。

  1. 为您的搜索创建表单模型(SearchForm.php)并将其放在models文件夹中。

    class SearchForm extends CFormModel
    {
            public $search_key;
            public $search_cat;
    
            public function rules()
            {
                    return array(           
                            array('search_key,search_cat', 'required'),
                    );
            }
    }
    
  2. 假设我正在使用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));
        }
    

    }

  3. $searchModel->attributes=$_POST['SearchForm'];这就是我将用户输入重置为model.So,在您的视图中,表单将显示用户输入值。

    1. 在视图中调用此表单

             <?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(); ?>
      
    2. 希望,这将有助于您更好地练习。