2013-12-19 1 views
1

yii에서 레코드를 만드는 동안 내 모델 유효성 검사가 작동하지 않는 이유가 무엇인지 알 수 없습니다. 에는 오류가 표시되지 않습니다. 오류가 표시되지 않는 디스플레이 페이지로 전달되지만 필수 필드 중 하나라도 비어있는 경우 문제가 발생하지만 은 필수 필드가 모두 채워지지 않으므로 레코드를 삽입하지 않습니다.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), 

컨트롤러를 사용하고 업데이트에 표시

오류가 YII에 의해 기본적으로 검은 색 빨간색하지 ...... 확장으로 인해 그 것이다

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

누군가가 제게 이걸 어떻게 할 수 있는지 말해 주실 수 있습니다. 당신이 페이지를 리디렉션 할 경우 당신에게

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

보기 코드가 무엇 if? 업데이트보기와 동일합니까? 여기 쓸 수 있습니까? –

+3

보기 및 컨트롤러 코드는 중요한 질문입니다. 당신이 대답을 원한다면 –

+0

지연에 대해 유감스럽게도 내 업데이트가 정확하고보기가 똑같습니다 – hir

답변

0

+0

..... .. 작동한다. – hir

1

시도 감사, 오류가 표시되지 않습니다

코드는, 어쨌든 if (save()) 여부를 리디렉션합니다.

은 추가 할 {} 후 당신의

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

이 작동하지 않습니다. (...... 나는 – hir

+0

오 이전에이 작업을 시도했습니다. 동일한 문제에 직면했지만 'on'=> 'create' ('이름, 카테고리, 모델, 브랜드, 설명, 가격', '필수'), 배열 ('pimg', '파일', '유형') 배열로 시도하십시오. => 'jpg', 'on'=> 'insert', 'allowEmpty'=> false), 업데이트 –

+0

에 대한 유효성 검사를 쓰지 마시오. 아무 것도 아니야 ... wwk – hir

관련 문제