@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как вылечить выбор dropDownList Yii2?

В общем опять Yii удивляет. Редактирую форму создания. Было всё созданом КРАДом.

У меня в БД таблицы со связями поэтому КРАД сразу сгенерировал в моделях связи.

Вместо номера категории я хотел вывести выбор отделения по связанной таблице.

В вьюхе формы сделал

<div class="price-form">

    <?php $form = ActiveForm::begin(); ?>


    <?= $form->field($model, 'category_id')->dropDownList(ArrayHelper::map(Category::find()->all(), 'id','name'))?>

    <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'unit')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'price')->textInput(['maxlength' => true]) ?>

    <div class="form-group">
        <?= Html::submitButton(Yii::t('app', 'Сохранить'), ['class' => 'btn btn-style-one']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>


Оно то работает. Категорию выбрать можно. И даже можно изменить. Но в самом инпуте пустота. Не видно какой изначально параметр,а какой ты выбрал. Это что за колдунство? Я в другом проекте точно так же делал

Модель Price
<?php

namespace app\modules\admin\models;

use Yii;

/**
 * This is the model class for table "price".
 *
 * @property int $id Номер
 * @property int $category_id Номер категории услуги
 * @property string $name Наименование услуги
 * @property string $unit Единица измерения
 * @property string $price Цена в рублях
 *
 * @property Orders[] $orders
 * @property Category $category
 */
class Price extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'price';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['category_id'], 'integer'],
            [['name'], 'string', 'max' => 255],
            [['unit'], 'string', 'max' => 60],
            [['price'], 'string', 'max' => 30],
            [['category_id'], 'exist', 'skipOnError' => true, 'targetClass' => Category::className(), 'targetAttribute' => ['category_id' => 'id']],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => '№',
            'category_id' => 'Отделение',
            'name' => 'Наименование услуги',
            'unit' => 'Единица измерения',
            'price' => 'Цена',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
   /* public function getOrders()
    {
        return $this->hasMany(Orders::className(), ['price_id' => 'id']);
    }*/

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getCategory()
    {
        return $this->hasOne(Category::className(), ['id' => 'category_id']);
    }
}
Модель Category
<?php

namespace app\modules\admin\models;

use Yii;

class Category extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'category';
}

/**
* @inheritdoc
*/
public function rules()
{
return [
[['description', 'keywords'], 'string'],
[['name'], 'string', 'max' => 30],
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'name' => 'Name',
'description' => 'Description',
'keywords' => 'Keywords',
];
}

/**
* return \yii\db\ActiveQuery
*/
public function getDoctors()
{
return $this->hasMany(Doctors::className(), ['category_id' => 'id']);
}

/**
* return \yii\db\ActiveQuery
*/
public function getOrders()
{
return $this->hasMany(Orders::className(), ['category_id' => 'id']);
}

/**
* return \yii\db\ActiveQuery
*/
public function getPrices()
{
return $this->hasMany(Price::className(), ['category_id' => 'id']);
}
}


Но визуально нет активного выбора в input

5ae035bc96daf397958170.jpeg

Это может быть связано с правилами?
Оно просто правила такие вот сгенерило
public function rules()
    {
        return [
            [['category_id'], 'integer'],
            [['name'], 'string', 'max' => 255],
            [['unit'], 'string', 'max' => 60],
            [['price'], 'string', 'max' => 30],
            [['category_id'], 'exist', 'skipOnError' => true, 'targetClass' => Category::className(), 'targetAttribute' => ['category_id' => 'id']],
        ];
    }
  • Вопрос задан
  • 739 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
В общем опять Yii удивляет

Готов спорить, что удивляет верстка, js какой-то, но yii тут точно не при чем. Открывайте консоль и ищите ошибки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы