2013-03-20 3 views
0

나는 프로필 사진에 대한 파일 업로드로 설정 양식을 가지고 있고, 그래서 같은 파일 업로드의 유효성을 검사하고 있습니다 : 그러나,보기 유효성 검사 오류

'picture' => array(
    'kosher' => array(
     'rule' => 'validateImage', 
     'message' => 'Only images are allowed to be uploaded' 
    ), 
    'size' => array(
     'rule' => array('fileSize', '<=', '2MB'), 
     'message' => 'Picture must be less than 2 MB' 
    ) 
) 

검증 실행 및 작품 잘못된 데이터를 제출하면 유효성 검사 오류가 양식에 표시되지 않습니다. 다음과 같이 전체 양식을 작성합니다.

<?php echo $this->Form->create('Profile', array('type' => 'file')); ?> 
<?php echo $this->Form->hidden('id'); ?> 
<?php echo $this->Form->label('Profile.picture', 'Profile picture'); ?> 
<?php echo $this->Form->file('picture'); ?> 
<?php echo $this->Form->input('firstname'); ?> 
<?php echo $this->Form->input('lastname'); ?> 
<?php echo $this->Form->input('email', array('between' => 'This is the email other users will use to contact you')); ?> 
<?php echo $this->Form->input('Skill', array('type' => 'text', 'value' => $skills, 'label' => 'Your skills (seperate each skill by space)')); ?> 
<?php echo $this->Form->input('course'); ?> 
<?php echo $this->Form->input('bio'); ?> 
<?php echo $this->Form->end('Save changes'); ?> 

다른 필드 오류 메시지는 파일 업로드가 아닌 올바르게 표시됩니다. 파일 입력 주위에 유효성 검사 오류를 표시하려면 어떻게합니까?

+0

'(포토 ')는 picture'' 서식 - 파일>'를위한 어레이로서 정의된다 '; ?>'하지만 size가 아닙니다. 내가 말할 수있는 것처럼 멀리. –

+0

내가 무슨 말하는지 이해가 안 되니? picture'' –

+0

귀하의 '메시지'=> '사진해야'firstname'' 등 '파일 업로드에 대한 오류 메시지가 아닌가' ',' '에 비해 size''은 어디 echo'ed되지 않는' 2 MB보다 작습니까? ' –

답변

1

당신은 다른 파일 업로드 필드 아무것도 생성되지 않습니다 $this->Form->file('picture');을 사용했다.

아래에 $this->Form->error('picture');을 추가하면 유효성 검사 오류 메시지가 표시되거나 $this->Form->input('picture', array('type' => 'file'));을 사용하여 파일 업로드 입력을 생성 할 수도 있습니다.

Form::input()

은 필요한 입력 필드 라벨 태그를 생성하고 검증 에러 메시지가있는 경우를 도시 래퍼 방법이다. 설명서를 읽으십시오.

+0

CakePHP FormHelper가 자동으로'file' 입력을 생성하지 않기 때문에 'picture'필드에 사용할 입력 유형을 지정해야합니다. 즉, 'echo $ this-> Form-> input ('picture ', array ('type '=>'file '));' – thaJeztah

+0

이 부분을 언급하는 것을 잊어 버렸습니다. ' 'type'=> 'file''을 자동으로 유추 할 수 없으므로 지정해야합니다. 그에 따라 원래의 답변을 업데이트했습니다. – ADmad