как прикрепить юзера в поле ActiveForm в yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

как прикрепить юзера в поле ActiveForm в yii2

Сообщение alexa777 »

привет
Пытаюсь пытаюсь прикрепить юзера к добавлению записи вот так

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

<?= $form->field($model, 'user_id')->  hiddenInput(Yii::$app->user->identity->getId()) ?>

Но в ответ
PHP Warning – yii\base\ErrorException
array_merge(): Argument #2 is not an array
Как сделать правильно?
Спасибо
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение alexa777 »

Всем спасибо все решил
detected
Сообщения: 174
Зарегистрирован: 2017.06.16, 12:24

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение detected »

Yii::$app->user->id;
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение kawabanga »

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

hiddenInput(Yii::$app->user->identity->getId())
вместо Yii::$app->user->identity->getId() у вас функция должна принимать htmlOptions

Используйте в модели запись юзера в функции - beforeSave()
А еще лучше - http://www.yiiframework.com/doc-2.0/yii ... avior.html
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение ElisDN »

alexa777 писал(а): 2018.01.24, 19:12 Как сделать правильно?
В контроллере вписать:

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

$model->user_id = Yii::$app->user->id;
и убрать $form->field($model, 'user_id') из формы.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение urichalex »

Дополню Дмитрия. $model->user_id = Yii::$app->user->id; нужно сделать уже после $model->load() иначе можно подменить ID
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение alexa777 »

urichalex писал(а): 2018.01.24, 22:19 Дополню Дмитрия. $model->user_id = Yii::$app->user->id; нужно сделать уже после $model->load() иначе можно подменить ID
Если ставить после load

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

   if ($model->load(Yii::$app->request->post()) && $model->save()) {
            $model->user_id = Yii::$app->user->id;
Нечего не сохраняет
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение kawabanga »

Лол. Научитесь просто читать код. Я не шучу.

if - если мы
$model->load(Yii::$app->request->post()) - успешно загрузили данные из пост в модели
&& $model->save() и сохранили ее
$model->user_id = Yii::$app->user->id; - даем значение user_id

Чего не хватает? правильно, сохранения.

Конкретно в этом кейсе
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->user_id = Yii::$app->user->id;
$model->save(false);

}
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение alexa777 »

kawabanga писал(а): 2018.01.25, 18:57 Лол. Научитесь просто читать код. Я не шучу.

if - если мы
$model->load(Yii::$app->request->post()) - успешно загрузили данные из пост в модели
&& $model->save() и сохранили ее
$model->user_id = Yii::$app->user->id; - даем значение user_id

Чего не хватает? правильно, сохранения.

Конкретно в этом кейсе
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->user_id = Yii::$app->user->id;
$model->save(false);

}
А почему false в save?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение urichalex »

kawabanga писал(а): 2018.01.25, 18:57 Лол. Научитесь просто читать код. Я не шучу.

if - если мы
$model->load(Yii::$app->request->post()) - успешно загрузили данные из пост в модели
&& $model->save() и сохранили ее
$model->user_id = Yii::$app->user->id; - даем значение user_id

Чего не хватает? правильно, сохранения.

Конкретно в этом кейсе
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->user_id = Yii::$app->user->id;
$model->save(false);

}
Зачем сохранять 2 раза?

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

if($model->load(Yii::$app->getRequest()->post())) {
	$model->user_id = Yii::$app->user->id;
	if($model->save()) {
		return $this->refresh();
	}
}

kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение kawabanga »

Я не сохранял два раза, сначала валидация, потом сохранение.
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение alexa777 »

kawabanga писал(а): 2018.01.25, 19:17 Я не сохранял два раза, сначала валидация, потом сохранение.

ТАк почему в save задано false?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: как прикрепить юзера в поле ActiveForm в yii2

Сообщение ElisDN »

alexa777 писал(а): 2018.01.25, 20:12 ТАк почему в save задано false?
Чтобы валидация второй раз не запускалась.
Ответить