2013-12-19 49 views
1

我真的不知道爲什麼會發生這種情況,我的模型驗證在yii中創建記錄時不起作用。 不顯示任何錯誤。 問題是如果任何必填字段爲空,雖然它傳遞到顯示頁面不顯示錯誤 但它不插入記錄,因爲所有必填字段a未填寫。模型驗證在yii中創建記錄時不起作用

我的需求是以相同的形式顯示錯誤,即如果必填字段爲空,驗證不應通過。

確認沒有問題的作品在更新,問題與創建表單

但它插入記錄,如果所有需要的領域都充滿。在更新顯示

錯誤是黑色而不是紅色,通過警予默認......是由於擴展正在使用

模型規則

 array('name, category, model, brand, description, price', 'required'), 
     array('pimg', 'file','types'=>'jpg','on'=>'create'), 
     array('pimg', 'file','types'=>'jpg','on'=>'update', 'allowEmpty'=>true), 

控制器創建

 $model=new controllername; 

    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['controllername'])) 
    { 
     $model->attributes=$_POST['controllername']; 
     $model->pimg=CUploadedFile::getInstance($model,'pimg'); 
     $fileName = $model->pimg; 


     if($model->save()) 
      $model->pimg->saveAs('images/'.$fileName); 
      $this->redirect(array('display','id'=>$model->productid)); 

    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 

查看

<?php $form=$this->beginWidget('CActiveForm',array(
    'id'=>'form_name', 
    'enableAjaxValidation'=>false, 
    'htmlOptions'=>array('enctype'=>'multipart/form-data'), 
    )); ?> 

     <p class="note">Fields with <span class="required">*</span> are required.</p> 





    <?php echo $form->labelEx($model,'name'); ?> 
    <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>60)); ?> 
    <?php echo $form->error($model,'name'); ?> 

    <?php echo $form->labelEx($model,'model'); ?> 
    <?php echo $form->textField($model,'model',array('size'=>30,'maxlength'=>30)); ?> 
    <?php echo $form->error($model,'model'); ?> 


    <?php echo $form->labelEx($model,'description'); ?> 
    <?php echo $form->textField($model,'description',array('size'=>60,'maxlength'=>256)); ?> 
    <?php echo $form->error($model,'description'); ?> 



    <?php echo $form->labelEx($model,'pimg'); ?> 
    <?php echo $form->hiddenField($model,'pimg',array('length'=>222)); ?> 
    <?php echo $form->fileField($model, 'pimg',array('id'=>'imgInput',)); ?> 

    <?php echo $form->error($model,'pimg'); ?> 



    <?php echo $form->labelEx($model,'category'); ?> 
    <?php echo $form->dropDownList($model,'category',$model->getCat()); ?> 
    <?php echo $form->error($model,'category'); ?> 


<?php echo $form->labelEx($model,'brand'); ?> 
    <?php echo $form->textField($model,'brand',array('size'=>30,'maxlength'=>30)); ?> 
    <?php echo $form->error($model,'brand'); ?> 

    <?php echo $form->labelEx($model,'price'); ?> 
    <?php echo $form->textField($model,'price'); ?> 
    <?php echo $form->error($model,'price'); ?> 






<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> 


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

可以有人請告訴我,我怎麼能做到這一點。謝謝

+0

你有什麼看法碼? 它與更新視圖相同嗎? 你可以在這裏寫嗎? –

+3

您的視圖和控制器代碼對於我們回答您的問題非常重要。 如果你想答案 –

+0

抱歉延遲雅你的絕對正確我的更新和創建視圖是一樣的 – hir

回答

0

如果您重定向的頁面時,將不會顯示錯誤,

你的代碼重定向反正if (save())與否。

添加{}後您的if

if($model->save()) 
{ 
      $model->pimg->saveAs('images/'.$fileName); 
      $this->redirect(array('display','id'=>$model->productid)); 
} 
+0

謝謝:) ..... .. 有用 – hir

1

嘗試

array('name, category, model, brand, description, price', 'required'), 
array('pimg', 'file','types'=>'jpg','on'=>'insert', 'allowEmpty'=>false), 
array('pimg', 'file','types'=>'jpg','on'=>'update', 'allowEmpty'=>true), 
+0

不工作:(......我以前試過這 – hir

+0

ohh ..我面臨同樣的問題,但是當我取代'on'=>'創建'與'on'=>'insert'它對我有效。嘗試使用array('name,category,model,brand,description,price','required'), array('pimg','file','types' =>'jpg','on'=>'insert','allowEmpty'=> false),不要寫驗證更新 –

+0

nope ...... doesnt wrk – hir