Страница 1 из 1
Просто вопрос про afterSave
Добавлено: 2015.01.04, 23:05
Akulenok
Я создаю категории, есть поля name, slug, parent_id, number_post
number_post не обязательное поле, и если юзер его не заполнил должно быть по умолчанию 10.
в первой Yii я сделал бы так
Код: Выделить всё
public function afterSave
if(empty($this->number_post)) $this->number_post = 10;
а как теперь это сделать? и как лучше правильнее поступить? желательно с примером кода
Re: Просто вопрос про afterSave
Добавлено: 2015.01.05, 00:15
anton44eg
так же
Re: Просто вопрос про afterSave
Добавлено: 2015.01.05, 01:09
zelenin
я бы в валидацию добавил default
Re: Просто вопрос про afterSave
Добавлено: 2015.01.05, 06:24
Insolita
ну если не в валидацию то в beforeSave не в after
Re: Просто вопрос про afterSave
Добавлено: 2015.01.05, 10:09
Akulenok
спасибо разобрался и еще вопрос в догонку
мне надо сгенерировать ссылку из поля name, то есть сделать slug, у меня это поле называется link.
в модели я делаю
Код: Выделить всё
use yii\behaviors\SluggableBehavior;
public function behaviors()
{
return [
[
'class'=>SluggableBehavior::className(),
'slugAttribute'=>'link',
'attribute'=>'name'
]
];
}
но ничего не происходит, link пустая, что я делаю не правильно?
она заполняется если поле name заполняю на английском, а мне надо с русского транслит
и только в том случае если пользователь не заполнял руками поле link
Re: Просто вопрос про afterSave
Добавлено: 2015.01.09, 13:54
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? Что мне в нем указывать надо?
Re: Просто вопрос про afterSave
Добавлено: 2015.01.09, 13:56
zelenin
beforeSave - метод для модели, а не для контроллера
Re: Просто вопрос про afterSave
Добавлено: 2015.01.09, 14:03
wpd
ааа, вот я дурень! Актив Рекордс же там. Что то я не подумал.
Значит получается сценарий не надо указывать.
Значит я в сайтконтроллере я создал объект класса Юзер. При заполнении полей данными, если я буду сохранять, то бефоресейв сработает в моделе верно?
Я уточняю, чтоб понять правильно ли я понимаю логику.
Что есть $insert? И как "он" поймет что это добавление а не апдейт?
Re: Просто вопрос про afterSave
Добавлено: 2015.01.09, 14:06
zelenin
wpd писал(а):ааа, вот я дурень! Актив Рекордс же там. Что то я не подумал.
Значит получается сценарий не надо указывать.
Значит я в сайтконтроллере я создал объект класса Юзер. При заполнении полей данными, если я буду сохранять, то бефоресейв сработает в моделе верно?
Я уточняю, чтоб понять правильно ли я понимаю логику.
Что есть $insert? И как "он" поймет что это добавление а не апдейт?
для новой записи передается $insert = true
Re: Просто вопрос про afterSave
Добавлено: 2015.01.09, 14:07
wpd
Спасибо, пойду тестить