2013-02-05 2 views
1

저는 케이크 초보자이며 블로그 자습서를 마쳤습니다. 이제 시작하기가 간단합니다. 하지만 이해할 수없는 것이 있습니다. 이것은 $의 유효성을 배열 내 모델Cakephp 데이터 유효성 검사 "notEmpty" "required"

입니다 :

class PersonalInformation extends AppModel { 

/** 
* Validation rules 
* @var $validate 
*/ 
public $validate = array(
    "first_name" => array(
     "name"  => array(
      "rule"  => "validName", 
      "message" => 'Only alpha characters and "." (dots)', 
     ), 
    ), 
    "last_name" => array(
     "name"  => array(
      "rule"  => "validName", 
      "message" => 'Only alpha characters and "." (dots)', 
     ), 
    ), 
    "birth_date" => array(
     "date"  => array(
      "rule"  => "date", 
      "message" => "Enter a valid date", 
     ), 
    ), 
    "nickname" => array(
     "alphanumeric" => array(
      "rule"  => "alphaNumeric", 
      "message" => "Only alpha-numeric characters", 
     ), 
    ), 
    "gender"  => array(
     "notEmpty" => array(
      "rule"   => "notEmpty", 
      "message"  => "Can't be empty", 
     ), 
    ), 
); 

} // end class 

가 그리고 이것은 내 테이블 : 여기

CREATE TABLE `personal_informations` 
(
`id` INT NOT NULL UNIQUE AUTO_INCREMENT, 
`first_name` VARCHAR(45), 
`last_name` VARCHAR(45), 
`birth_date` DATE, 
`nickname` VARCHAR(45), 
`is_company` TINYINT DEFAULT 0 NOT NULL, 
`picture_url` VARCHAR(255), 
`gender` ENUM('m','f') NOT NULL, 
`notes` TEXT, 
`created` DATETIME, 
`modified` DATETIME, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB CHARACTER SET=utf8; 

CREATE INDEX `id_idx` ON personal_informations(id); 

그리고 테이블 필드의 데이터 유효성 검사를 가지고 PersonalInformation 모델에 보기입니다 :

<!-- /PersonalInformations/add --> 

<div class=""> 
<h2>Create a personal information</h2> 
    <?php 
    echo $this->Form->create(); 

    echo $this->Form->input("PersonalInformation.first_name"); 
    echo $this->Form->input("PersonalInformation.last_name"); 
    echo $this->Form->input( 
     "PersonalInformation.birth_date", 
     array( 
      "separator" => " - ", 
      "minYear" => date('Y') - 90, 
      "maxYear" => date('Y') 
    ) 
    ); 
    echo $this->Form->input("PersonalInformation.nickname"); 
    echo $this->Form->input("PersonalInformation.is_company", array("type" =>  "checkbox")); 
    echo $this->Form->input("PersonalInformation.piture_url", array("type" => "file" )); 
    echo $this->Form->radio("PersonalInformation.gender", array("m" => __("Male"), "f"  => __("Female")), array("hiddenField" => false)); 
    echo $this->Form->textarea("PersonalInformation.notes"); 

    echo $this->Form->end("Done"); 
    ?> 
</div> 

그래서 문제는 어떤 이유로 t 그는 "닉네임"이 필요합니다. 즉, "닉네임"이 비어있는 제출 버튼을 클릭하면 "영숫자 문자 만 표시됩니다"라는 의미입니다. "성별"이 선택되지 않은 경우 아무것도 표시되지 않습니다.

내가 게시해야 할 것이 있다면 알려주십시오.

+0

"allowEmpty"가 작동했습니다. 이전에 시도 했었는데 문제는 그것이 닉네임 배열을 벗어난 것이고 ADmad 게시물에 나타났습니다 THanks 모두 (unfortanly 나는 투표 할 수 없음) – mloureiro

답변

0

닉네임은 required => false입니까? 당신은 자세한 내용을보실 수 있습니다 성별에 대한 별명

'nickname' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'Nick name is required.' 
      ) 
     ) 

것이 in the documentation.

"nickname" => array(
    "alphanumeric" => array(
     "rule"  => "alphaNumeric", 
     "required" => false, 
     "message" => "Only alpha-numeric characters", 
    ), 
), 
+0

실제로 "필수"는 무엇이 아닌가? 그는 원한다. "required '=> true는이 필드가 $ this-> data에있는 키없이 모델을 저장할 수 없다는 것을 의미합니다 (검사가 수행됩니다). 즉, 'allowEmpty'=> false는 위에서 설명한 것처럼 현재 필드 값이 비어 있지 않음을 확인합니다. " – chronon

1

에 대한 :

뷰 모델 유효성 검사 배열에서

echo $this->Form->input('PersonalInformation.gender',array(
      'type'=>'select','empty' => '---- Select----', 
      'class'=>'select', 
      'options'=>$option_array 
     )) 

에서 :

'gender' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'Can\'t be empty.' 
      ) 
     ) 
+0

성별에 대해 나는 에 대해 시험 할 것이지만, 별명에 관해서는 요구하고 싶지는 않지만, 어떤 이유로 입력을 채우지 않고 제출하도록하지 않기 때문에 제출을 클릭하는 것처럼 보입니다. – mloureiro

+0

닉네임에 대해 정확히 필요한 기능. –

+0

설명서에 따르면 "notEmpty"는 버전 2.7에서 사용되지 않습니다. 그것을 대체하는 함수는 "notBlank"입니다. 첫 번째 문제에 대한 설명이 없습니다. – UncaAlby

1

닉네임 규칙에 'allowEmpty' => true을 추가하십시오.

"nickname" => array(
     "alphanumeric" => array(
      "allowEmpty"=> true, 
      "rule"  => "alphaNumeric", 
      "message" => "Only alpha-numeric characters", 
     ), 
    ), 
관련 문제