Вход

Yii2: Выпадающий список DropDownList

Yii2: Выпадающий список DropDownList

Любой современный сайт не обходится без элементов форм и сегодня мы поговорим об одном из них — выпадающем списке, реализуемом на yii 2.


Выпадающий список yii 2

Для работы нам потребуется контроллер, модель и вид. Начнём с контроллера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  public function actionFaqcategory()
    {
            $model = new CategoryForm(); 
 
            if ($model->load(Yii::$app->request->post()) && $model->validate()){
 
                $question_cat = new Category;
                $question_cat->name = $model->name;
                $question_cat->parrent = $model->parrent;
                $question_cat->save();
 
                return Yii::$app->response->redirect(['index/main']);
            }
 
            return $this->render('category', compact('model'));
 
 
    }
?>

Данный контроллер принимает два поля из формы (name и parrent) и записывает их в базу данных.

Теперь давайте опишем данные поля в файле модели CategoryForm.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
namespace app\models;
 
use Yii;
use yii\base\Model;
use yii\db\ActiveRecord;
 
 
class CategoryForm extends ActiveRecord
{
    public $name;
    public $parrent;
 
    public function rules()
    {
        return [
            [['name', 'parrent'], 'required'],
            [['name', 'parrent'], 'trim'],
        ];
    }
}

В данном файле мы объявляем наши два поля и выставляем их обязательными для заполнения.

Осталось реализовать файл вида (category.php) Так как выпадающий список это элемент формы, то нам потребуется класс ActiveForm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
 
   <?php $form = ActiveForm::begin(); ?>
 
        <?= $form->field($model2, 'name')->label('Название категории')->textInput();?>
	<?php
 
		$categoryes = array();
 
 
		$params = [
			'prompt' => 'Выберите раздел'
		];
		echo $form2->field($model2, 'parrent')->dropDownList($categoryes,$params)->label('Родительский раздел');
	?>
 
		<?= Html::submitButton('Сохранить', ['class' => 'btn btn-primary']) ?>
 
     <?php ActiveForm::end(); ?>
?>

Массив $categoryes должен иметь следующий вид: ‘0’=>’категория 0′, ‘1’=>’категория 1′, ‘2’=>’категория 2′ и т.д.
В массиве $params мы указываем один единственный элемент ‘prompt’ — это обычная подпись для списка, информирующая о необходимости выбора элемента (не пусть с label)

Если нам потребуется выставить значение по умолчанию, то в массив $params мы добавим следующую строку:

1
'options' => ['2' => ['selected'=>'selected']]

или

1
'options' => ['2' => ['Selected' => true]]

Вместо ключа ‘2’ может быть переменная из базы данных

10 мая 2017 /

7638 Views /

7 комментариев
Ilya Web developer
Author

«Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.»Martin Golding