Как изменять _attribute модели?
Как изменять _attribute модели?
Как записать / изменить данные в private массиве модели _attribute?
Re: Как изменять _attribute модели?
Код: Выделить всё
$model->name = 'value';
//или
$model->setAttribute('name', 'value');
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Как изменять _attribute модели?
А массив?
Цель могу описать, но она уже описана в двух вопросах, которые вы обошли вниманием.
Цель могу описать, но она уже описана в двух вопросах, которые вы обошли вниманием.
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Как изменять _attribute модели?
повторяю повторно, менять там ничего не нужно. раз это свойство приватное, значит изменению извне не подлежит(в нормальном подходе).
Yii2!
Re: Как изменять _attribute модели?
код setAttribute
вносит изменение в _attributes. Чем не устраивает?
Код: Выделить всё
public function setAttribute($name, $value)
{
if ($this->hasAttribute($name)) {
$this->_attributes[$name] = $value;
} else {
throw new InvalidParamException(get_class($this) . ' has no attribute named "' . $name . '".');
}
}
Re: Как изменять _attribute модели?
Подход такой:
На странице несколько форм. В формах поля field[] - сплошной список: в первой 1-5 поля, во второй с 6 и т.д.
Из html в post приходит массив полей field[] той формы, в которой был нажат submit.
Т.е. мне нужно отразить и данные формы, что только что пришла, и остальные, выбрав имеющиеся данные из базы данных.
В базе данных для каждого поля своя строка - модель не соответствует таблице db.
Из-за этого в формируемой модели нет _attributes. А потому dropDownList не проставляет правильные selected.
Ещё при ошибке валидации пестрит вся форма.
На странице несколько форм. В формах поля field[] - сплошной список: в первой 1-5 поля, во второй с 6 и т.д.
Из html в post приходит массив полей field[] той формы, в которой был нажат submit.
Т.е. мне нужно отразить и данные формы, что только что пришла, и остальные, выбрав имеющиеся данные из базы данных.
В базе данных для каждого поля своя строка - модель не соответствует таблице db.
Из-за этого в формируемой модели нет _attributes. А потому dropDownList не проставляет правильные selected.
Ещё при ошибке валидации пестрит вся форма.
Re: Как изменять _attribute модели?
Не устраивает тем, что какой-то затык происходит при попытке вставить в атрибут массив.phpshko писал(а):код setAttribute
вносит изменение в _attributes. Чем не устраивает?
Re: Как изменять _attribute модели?
В моделе есть
public $field;
?
может посмотреть в сторону готовых виджетов?
https://github.com/unclead/yii2-multiple-input
public $field;
?
может посмотреть в сторону готовых виджетов?
https://github.com/unclead/yii2-multiple-input
Re: Как изменять _attribute модели?
В модели есть public field = [];
При присвоении массива происходит затык.
Завтра на работе скажу какой ))
При присвоении массива происходит затык.
Завтра на работе скажу какой ))
Re: Как изменять _attribute модели?
Не вносит он.phpshko писал(а):код setAttribute
вносит изменение в _attributes. Чем не устраивает?
Есть модель со свойством field
$model->field = [6=>4, 7=>93, 8=>12];
[при использовании setAttribute пишет, что нет поля field; я не против - ведь это массив]
Я делаю так:
$model->setAttributes('field',$model->field);
private _attribute и _oldAttribute так и остаются пустыми.
Если я пытаюсь переложить так в другую модель:
$model2->setAttributes('field',$model->field);
в ней _attribute и _oldAttribute и field вообще остаются пустыми.
Re: Как изменять _attribute модели?
Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
Re: Как изменять _attribute модели?
Зачем тогда советовать setAttribute, если он ничего не меняет?phpshko писал(а):Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
Удивляюсь я людям-зачемкам.
Ну нужно мне. Знаешь - ответь.
Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
Re: Как изменять _attribute модели?
Удивляюсь я людям-зачемкам.
Как показывает практика, люди-зачемки иногда спасают проект от говнокода.Сообщение vitalik1183 » 2015.10.05, 20:00
с какой целью? ненужно там менять ничего!
И вам пишут, что никто там ничего не делает, все что вы планируете делать, созданных в трех ветках - решается, прочитав один другой раз мануалы. Вам уже дали ссылку - http://www.yiiframework.com/doc/guide/1.1/ru/form.table . возможно это то, что вам нужно.
Re: Как изменять _attribute модели?
как показывает практика, в 80% случаев вопрошающий именно олигофрен, и вовремя заданный вопрос его энергию направляет в правильное русло.megl писал(а):Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
Если вы считаете, что вам нельзя задавать вопрос "зачем", тогда у меня для вас хорошие новости: ваша квалификация позволяет самому разобраться в 2-3 методах, работающих с _attributes модели.
Re: Как изменять _attribute модели?
мда...megl писал(а):Зачем тогда советовать setAttribute, если он ничего не меняет?phpshko писал(а):Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
Удивляюсь я людям-зачемкам.
Ну нужно мне. Знаешь - ответь.
Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
Re: Как изменять _attribute модели?
Поздно спасать.kawabanga писал(а):Как показывает практика, люди-зачемки иногда спасают проект от говнокода.
Бритва Оккама vs нормализация.
Борьба за сущности.
Всем спасибо за помощь.
Был не в себе. Осознал.phpshko писал(а):мда...