У меня есть модель товаров Products
и модель количества товаров Amounts
. В модели Products
есть связь
public function getAmounts()
{
return $this->hasMany(Amounts::className(), ['product_id' => 'id']);
}
Пытаюсь создать форму, поле для количества хочу записать так
<?=$form->field($model->amounts, 'amount')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>
И получаю ошибку
Call to a member function isAttributeRequired() on array
Почему так происходит?
Как вариант. Создайте в модели Products
вирутальное поле amount
.
На форме:
<?=$form->field($model, 'amount')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>
В afterSave()
сохраняйте связанную модель.
Способов много..
getAmounts()
Возвращает массив данных. Судя по вопросу, необходим count моделей Amounts. Только не совсем понятно, для чего это выводить в поле input? Amounts::className()
давно пора заменить на Amounts::class
, так быстрее работает.
UPD
Вероятно, код реляции может выглядеть таким образом:
public function getAmounts()
{
return $this->hasOne(Amounts::className(), ['product_id' => 'id']);
}
А в форме надо указать конкретное поле из модели Amounts
<?=$form->field($model->amounts, 'fieldNameFromAmountTable')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>
Для генерации инпута нам надо в него скинуть модель и название поля. В данном случае hasOne() вернет модель. И проверку не забыть сделать, если ничего не вернет, тогда надо будет создать новую модель.
Виртуальный выделенный сервер (VDS) становится отличным выбором
такая проблема: Раньше сайт стоял на линуксе, при переносе на мой локальный веб-сервер на windows смарти начал создавать пустые compiled файлы, в которых...
Хостинг заражен вирусом и все сайты на ном (4) перенаправляется на другие сайтыВ начале всех файлах index