Просто вопрос про afterSave

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Просто вопрос про afterSave

Сообщение Akulenok »

Я создаю категории, есть поля name, slug, parent_id, number_post
number_post не обязательное поле, и если юзер его не заполнил должно быть по умолчанию 10.
в первой Yii я сделал бы так

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

public function afterSave
 if(empty($this->number_post)) $this->number_post = 10;
 
а как теперь это сделать? и как лучше правильнее поступить? желательно с примером кода
ភាសាខ្មែរ Yii2 - это кайф!
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Просто вопрос про afterSave

Сообщение anton44eg »

так же
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Просто вопрос про afterSave

Сообщение zelenin »

я бы в валидацию добавил default
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Просто вопрос про afterSave

Сообщение Insolita »

ну если не в валидацию то в beforeSave не в after
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: Просто вопрос про afterSave

Сообщение Akulenok »

спасибо разобрался и еще вопрос в догонку
мне надо сгенерировать ссылку из поля name, то есть сделать slug, у меня это поле называется link.
в модели я делаю

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

use yii\behaviors\SluggableBehavior;
public function behaviors()
    {
        return [
            [
                'class'=>SluggableBehavior::className(),
                'slugAttribute'=>'link',
                'attribute'=>'name'
            ]
        ];
    }
но ничего не происходит, link пустая, что я делаю не правильно?
она заполняется если поле name заполняю на английском, а мне надо с русского транслит
и только в том случае если пользователь не заполнял руками поле link
ភាសាខ្មែរ Yii2 - это кайф!
wpd
Сообщения: 161
Зарегистрирован: 2014.08.22, 12:34
Контактная информация:

Re: Просто вопрос про afterSave

Сообщение wpd »

Вопрос похожий. actionSignup у меня в SiteController. Я создал форму signup в views/site.
В форме несколько полей, я создал в сайт контроллере бефореСейв.

SiteController

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


public function actionSignup()
    {
        $model = new User();

        if ($model->load(Yii::$app->request->post())) {
            if ($model->validate()) {
                // form inputs are valid, do something here
                return;
            }
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }
    
    
 public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
           $this->status = User::STATUS_NOTACTIVE;
            return true;
        } else {
            return false;
        }
    }
Мне можно как-то указать что этот befoSave юзаеться только для signup экшна?
И что есть $insert? Что мне в нем указывать надо?
Download TV Series in HD http://serialsfree.net/
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Просто вопрос про afterSave

Сообщение zelenin »

beforeSave - метод для модели, а не для контроллера
wpd
Сообщения: 161
Зарегистрирован: 2014.08.22, 12:34
Контактная информация:

Re: Просто вопрос про afterSave

Сообщение wpd »

ааа, вот я дурень! Актив Рекордс же там. Что то я не подумал. :)
Значит получается сценарий не надо указывать.
Значит я в сайтконтроллере я создал объект класса Юзер. При заполнении полей данными, если я буду сохранять, то бефоресейв сработает в моделе верно?
Я уточняю, чтоб понять правильно ли я понимаю логику.

Что есть $insert? И как "он" поймет что это добавление а не апдейт?
Download TV Series in HD http://serialsfree.net/
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Просто вопрос про afterSave

Сообщение zelenin »

wpd писал(а):ааа, вот я дурень! Актив Рекордс же там. Что то я не подумал. :)
Значит получается сценарий не надо указывать.
Значит я в сайтконтроллере я создал объект класса Юзер. При заполнении полей данными, если я буду сохранять, то бефоресейв сработает в моделе верно?
Я уточняю, чтоб понять правильно ли я понимаю логику.

Что есть $insert? И как "он" поймет что это добавление а не апдейт?
для новой записи передается $insert = true
wpd
Сообщения: 161
Зарегистрирован: 2014.08.22, 12:34
Контактная информация:

Re: Просто вопрос про afterSave

Сообщение wpd »

Спасибо, пойду тестить :)
Download TV Series in HD http://serialsfree.net/
Ответить