rpsv
@rpsv
делай либо хорошо, либо никак

Почему не работает setAttributes?

Здрасте! Как то все не очень для меня понятно. Ниже представлены листинги контроллера и формы. Суть в том, что когда данные из формы, передаются в контроллер по AJAX - не работает безопасное присваивание, также не работает валидация (все 3 закоментированные варианты, не работают). То есть, ни возникает не ошибки, ничего (try, catch почему-то ничего не отлавливает). В чем проблема подскажите?

P.S. написал вопрос, и пошел ставить xDebug :-)

Код контролера
$model = new Note;
/**
 * AJAX валидация
 */
if (isset($_POST['ajax']) && $_POST['ajax'] === "note-form")
{
    echo CActiveForm::validate($model);
    Yii::app()->end();
}
/**
 * Обработка данных (только по AJAX)
 */
if (isset($_POST['Note']) && Yii::app()->request->isAjaxRequest)
{
    // 1 вариант:
    //$model->attributes = $_POST['Note'];
    // 2 вариант:
    //$model->setAttributes($_POST['Note'], false);
    // 3 вариант:
    // foreach ($_POST['Note'] as $name => $value) {
    //    $model->$name = $value;
    // }
    // Валидация раз:
    // $model->validate();
    // Валидация два:
    // CActiveForm::validate($model);
    if ($model->save()) {
        echo "Запись успешно добавлена!";
    } else {
        echo "Запись не может быть добавлена!";
    }
}
/**
 * Вывод формы
 */
else
{
    $model = is_null($id) ? $model : Note::model()->findByPk($id);
    $this->layout = 'admin';
    $this->render('form',array('model'=>$model), false);
}


Форма
<?php
/* @var $this NoteController */
/* @var $model Note */
/* @var $form CActiveForm */
?>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
     "id" => "note-form",
     "enableAjaxValidation" => true,
)); ?>

<div class="row">
        <?php echo $form->label($model,'id_type'); ?>
        <?php echo $form->textField($model,'id_type'); ?>
        <?php echo $form->error($model,'id_type'); ?>
</div>

<div class="row">
        <?php echo $form->label($model,'title'); ?>
        <?php echo $form->textField($model,'title'); ?>
        <?php echo $form->error($model,'title'); ?>
</div>

<div class="row">
        <?php echo $form->label($model,'content'); ?>
        <?php echo $form->textArea($model,'content'); ?>
        <?php echo $form->error($model,'content'); ?>
</div>

<div class="row">
        <?php echo $form->label($model,'addition_date'); ?>
        <?php echo $form->textField($model,'addition_date'); ?>
        <?php echo $form->error($model,'addition_date'); ?>
</div>

<div class="row">
        <?php echo $form->label($model,'is_deleted'); ?>
        <?php echo $form->checkBox($model, 'is_deleted'); ?>
        <?php echo $form->error($model,'is_deleted'); ?>
</div>


<div class="row buttons">
        <?php echo CHtml::ajaxSubmitButton("Применить", Yii::app()->request->requestUri, array(
            "type" => "POST",
            "data" => "js:jQuery(this).parents('form').serialize()",
            "update" => "#out",
            "success" => "function(data,textStatus){ alert(data + ' - ' + textStatus); }",
        )); ?>
        <?php echo CHtml::resetButton('Отмена'); ?>
</div>
    
<div id="out"></div>

<?php $this->endWidget(); ?>

</div><!-- form -->
  • Вопрос задан
  • 2442 просмотра
Решения вопроса 1
rpsv
@rpsv Автор вопроса
делай либо хорошо, либо никак
Ошибка в базе была, поэтому не удалось присвоить значения!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы