2013-10-23 37 views
0

當我在Yii上創建'創建'場景的新帖子時,我有兩個字段'簡短描述'和'長描述',所以當我我先點擊保存我有一條消息錯誤'簡短描述不能爲空。'併發布不保存,如果我點擊第二則後保存。 我該如何解決它?發佈沒有保存在第一次點擊,但保存在第二次點擊「保存」Yii

P.S.當我從規則中刪除這個字段後保存在第一次點擊。

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

謝謝!

怎麼我用一些擴展的textarea

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

當我更換textarea的文本字段中的所有工作好這事。

但我需要修復它,有任何想法嗎?

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'), 
    ); 
} 

認沽控制器不容易,怎麼我是用一個CRUD

所以,我用這種方式給我。我從需要的規則中刪除字段並創建了自己的規則。

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.'); 
    } 
} 

現在我需要在客戶端創建驗證。 謝謝大家的關注!

+1

您使用的textarea的延伸是什麼? – topher

+0

我的編輯是tinyMCE –

+1

謝謝。 '$ model-> save()'或'$ model-> create()'調用?只是爲了顯示你怎麼把'$模型 - >屬性' –

回答

0

而且,如果你總是使用這個限制嗎? (在所有情況下)

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(); ?> 
+0

crud謝謝,但這沒有幫助。 –

+1

「當我將textarea替換爲文本字段時,所有工作都很好。」 –

+0

我明白,在我不知道它之前,現在我想我需要找到爲什麼編輯器與Yii客戶端驗證器js衝突或刪除規則中的必填字段並創建自己的。 –

相關問題