私はケーキの初心者で、ブログのチュートリアルを終えました。今は簡単なことから始めようとしています。しかし、私は理解できない何かを手に入れました。モデルPersonalInformationで、テーブルフィールドのデータ検証を取得しました。
これは、$validate配列を使用した私のモデルです。
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);
そしてここにビューがあります:
<!-- /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>
したがって、問題は、何らかの理由で「ニックネーム」が必要なことです。つまり、「ニックネーム」が空の状態で送信ボタンをクリックすると、「英数字のみ」と表示されます。また、「性別」については、何も選択されていない場合は何も表示されません。
他に投稿する必要があるものがあれば、お知らせください。