Lomoson
@Lomoson

Обновление модели в Yii?

Извините за глупый вопрос, но подскажите, пожалуйста, как правильно сделать обновление с применением одного из правила валидации?

Если делать так:
$model = new Forms('edit_form');
$model->attributes = $_POST['Forms'];
if ($model->validate())
     $model->save(false);

то будет создана новая запись.

Если так:
$form = User::model()->findByPk($id);
$form->name = 'name';
$user->update();

то запись обновится, но не будут применены нужные правила валидации.

Как вариант можно проверять через new Forms('edit_form'), а потом $form = User::model()->findByPk($id); и потом уже валидные аттрибуты присваивать, но это как-то тупо.
  • Вопрос задан
  • 3400 просмотров
Пригласить эксперта
Ответы на вопрос 3
dotzero
@dotzero
if ($model->validate())
     $model->update();


Также, например можно сделать разные сценарии валидации и использовать их одни для сохранения, а другие для обновления.
www.yiiframework.com/doc/api/1.1/CModel#scenario-detail
Ответ написан
AloneCoder
@AloneCoder
[object Object]
Вам нужно указать нужное правило не только для сценария edit_form
Ответ написан
@DjSebas
www.yiiframework.com/doc/api/1.1/CModel#validate-detail

Что-то вроде:

$form = User::model()->findByPk($id);
$form->name = 'name';
if ( $form->validate(array('name')) ) {
    $user->update();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы