帖子没有在第一次点击时保存,而是保存在第二次点击“保存”Yii


Post not saved in first click, but saved in second click "Save" Yii

当我在 Yii 中关于场景"创建"创建新帖子时,我有两个字段"简短描述"和"详细描述",

所以当我单击第一个保存时,我收到一条消息错误"简短描述不能为空"和帖子不保存,如果我点击第二个,那么帖子被保存。我该如何解决?

附言当我从规则中删除此字段时,第一次单击保存。

array('title, price, short_description, long_description, store, in_stock', 'required', 'on'=>'general, create'),

谢谢!

发生这种情况,因为我为文本区域使用了一些扩展名

'short_description'=>array(
            'type'=>'textarea',
            'cols'=>50,
            'rows'=>10,
        ),
        'long_description'=>array(
            'type'=>'textarea',
            'cols'=>50,
            'rows'=>14,
        ),

当我将文本区域替换为文本字段时,一切正常。

但是我需要修复它,有人想过吗?

public function rules()
{
    return array(
        array('title, price, short_description, long_description, store, in_stock', 'required', 'on'=>'general, create'),
        array('short_description', 'length', 'encoding' => 'UTF-8', 'max'=>256),
        array('product_number, weight', 'safe', 'on'=>'general, create'),
        array('price, in_stock', 'numerical', 'on'=>'general, create'),
        array('price', 'numerical', 'integerOnly' => FALSE, 'min' => '0', 'on'=>'general, create'),
        array('in_stock', 'numerical', 'integerOnly' => FALSE, 'min' => '0', 'on'=>'general, create'),
        array('store','trialCreate','on'=>'create'),
        array('status', 'safe', 'on'=>'create'),
        array('meta_description, meta_keywords', 'safe', 'on'=>'meta'),
        array('currentImage', 'safe', 'on'=>'image'),
        array('newImage', 'file', 'allowEmpty'=>false, 'safe'=>true, 'types'=>'png, jpg, jpeg, gif', 'on'=>'image'),
        array('categoryIDs', 'validateCategories', 'on'=>'categories'),
        array('status', 'required', 'on'=>'status'),
        array('store', 'safe', 'on'=>'search'),
    );
}

把控制器不容易,因为我使用的是污垢

所以,我用这种方式为我。我正在从所需的规则中删除字段并创建自己的规则。

array('short_description, long_description', 'validateDescription', 'on'=>'general, create'),
/**
 *
*/
public function validateDescription()
{
    if($this->long_description=="")
    {
        $this->addError('long_description', 'Long Description cannot be blank.');
    }
    if($this->short_description=="")
    {
        $this->addError('short_description', 'Short Description cannot be blank.');
    }
}

现在我需要在客户端创建验证。谢谢大家的关注!

而且,如果您一直使用此限制?(在所有场景中)

array('title, price, short_description, long_description, store, in_stock', 'required'),

编辑:

你能放上你的型号/控制器代码吗?

编辑:

尝试使用CActiveForm小部件:

<?php $form=$this->beginWidget('CActiveForm', array(
                  'id'=>'myModel-form',
                  'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
    <?php echo $form->labelEx($model,'short_description'); ?>
    <?php echo $form->textArea($model,'short_description',array('maxlength'=>255, 'cols'=>50, 'rows'=>10)); ?>
    <?php echo $form->error($model,'short_description'); ?>
</div>
<div class="row">
    <?php echo $form->labelEx($model,'long_description'); ?>
    <?php echo $form->textArea($model,'long_description',array('maxlength'=>255, 'cols'=>50, 'rows'=>14)); ?>
    <?php echo $form->error($model,'long_description'); ?>
</div>

<div>
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save', array('class'=>'btn')); ?>
</div>
<?php $this->endWidget(); ?>