Как изменять _attribute модели?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Как изменять _attribute модели?

Сообщение megl »

Как записать / изменить данные в private массиве модели _attribute?
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: Как изменять _attribute модели?

Сообщение phpshko »

Код: Выделить всё

$model->name = 'value';
//или
$model->setAttribute('name', 'value');
или в чем вопрос?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Как изменять _attribute модели?

Сообщение vitalik1183 »

с какой целью? ненужно там менять ничего!
Yii2!
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

А массив?

Цель могу описать, но она уже описана в двух вопросах, которые вы обошли вниманием.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Как изменять _attribute модели?

Сообщение vitalik1183 »

повторяю повторно, менять там ничего не нужно. раз это свойство приватное, значит изменению извне не подлежит(в нормальном подходе).
Yii2!
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: Как изменять _attribute модели?

Сообщение phpshko »

код setAttribute

Код: Выделить всё

    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 . '".');
        }
    }
 
вносит изменение в _attributes. Чем не устраивает?
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

Подход такой:
На странице несколько форм. В формах поля field[] - сплошной список: в первой 1-5 поля, во второй с 6 и т.д.
Из html в post приходит массив полей field[] той формы, в которой был нажат submit.
Т.е. мне нужно отразить и данные формы, что только что пришла, и остальные, выбрав имеющиеся данные из базы данных.
В базе данных для каждого поля своя строка - модель не соответствует таблице db.
Из-за этого в формируемой модели нет _attributes. А потому dropDownList не проставляет правильные selected.
Ещё при ошибке валидации пестрит вся форма.
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

phpshko писал(а):код setAttribute
вносит изменение в _attributes. Чем не устраивает?
Не устраивает тем, что какой-то затык происходит при попытке вставить в атрибут массив.
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: Как изменять _attribute модели?

Сообщение phpshko »

В моделе есть
public $field;
?

может посмотреть в сторону готовых виджетов?
https://github.com/unclead/yii2-multiple-input
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

В модели есть public field = [];
При присвоении массива происходит затык.
Завтра на работе скажу какой ))
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

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 вообще остаются пустыми.
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: Как изменять _attribute модели?

Сообщение phpshko »

Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

phpshko писал(а):Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
Зачем тогда советовать setAttribute, если он ничего не меняет?
Удивляюсь я людям-зачемкам.
Ну нужно мне. Знаешь - ответь.
Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Как изменять _attribute модели?

Сообщение kawabanga »

Удивляюсь я людям-зачемкам.
Сообщение vitalik1183 » 2015.10.05, 20:00

с какой целью? ненужно там менять ничего!
Как показывает практика, люди-зачемки иногда спасают проект от говнокода.




И вам пишут, что никто там ничего не делает, все что вы планируете делать, созданных в трех ветках - решается, прочитав один другой раз мануалы. Вам уже дали ссылку - http://www.yiiframework.com/doc/guide/1.1/ru/form.table . возможно это то, что вам нужно.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как изменять _attribute модели?

Сообщение zelenin »

megl писал(а):Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
как показывает практика, в 80% случаев вопрошающий именно олигофрен, и вовремя заданный вопрос его энергию направляет в правильное русло.
Если вы считаете, что вам нельзя задавать вопрос "зачем", тогда у меня для вас хорошие новости: ваша квалификация позволяет самому разобраться в 2-3 методах, работающих с _attributes модели.
phpshko
Сообщения: 260
Зарегистрирован: 2015.03.21, 02:49

Re: Как изменять _attribute модели?

Сообщение phpshko »

megl писал(а):
phpshko писал(а):Зачем вам именно _attributes так нужны? можно переопределить attributes и там добавить фейковое поле, но тогда будут ошибки при сохранении, и я сомневаюсь что вам реально это нужно
Зачем тогда советовать setAttribute, если он ничего не меняет?
Удивляюсь я людям-зачемкам.
Ну нужно мне. Знаешь - ответь.
Нет, не знаешь, но хочется показать, что олигофрен именно вопрошающий.
мда...
megl
Сообщения: 29
Зарегистрирован: 2015.10.05, 11:42

Re: Как изменять _attribute модели?

Сообщение megl »

kawabanga писал(а):Как показывает практика, люди-зачемки иногда спасают проект от говнокода.
Поздно спасать.
Бритва Оккама vs нормализация.
Борьба за сущности.
Всем спасибо за помощь.
phpshko писал(а):мда...
Был не в себе. Осознал.
Ответить