Cakephp数据验证“;notEmpty“&引用;“必需”;
我是一个菜鸟蛋糕,完成了博客教程,现在我正在尝试一些简单的开始。 但我有点不明白。 在model PersonalInformation上,我得到了表字段的数据验证: 这是我的带有$validate数组的模型:Cakephp数据验证“;notEmpty“&引用;“必需”;,php,mysql,validation,cakephp,Php,Mysql,Validation,Cakephp,我是一个菜鸟蛋糕,完成了博客教程,现在我正在尝试一些简单的开始。 但我有点不明白。 在model PersonalInformation上,我得到了表字段的数据验证: 这是我的带有$validate数组的模型: class PersonalInformation extends AppModel { /** * Validation rules * @var $validate */ public $validate = array( "first_name" => arr
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
'gender' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Can\'t be empty.'
)
)
这是我的桌子:
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>
创建个人信息
所以问题是,出于某种原因,“昵称”是必需的,我的意思是,当我点击“昵称”为空的提交按钮时,它只显示“字母数字字符”。
对于“性别”,如果没有选择,则不会显示任何内容
如果还有什么我需要发布的,请告诉我。对于昵称,您是否尝试使用
required=>false
?
你可以阅读更多关于它的内容
为了你的绰号
'nickname' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Nick name is required.'
)
)
性别:
在视图中
echo $this->Form->input('PersonalInformation.gender',array(
'type'=>'select','empty' => '---- Select----',
'class'=>'select',
'options'=>$option_array
))
在模型验证阵列中:
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
'gender' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Can\'t be empty.'
)
)
为昵称规则添加
'allowEmpty'=>true
"nickname" => array(
"alphanumeric" => array(
"allowEmpty"=> true,
"rule" => "alphaNumeric",
"message" => "Only alpha-numeric characters",
),
),
关于性别,我会尽快测试,但关于昵称,我不希望它是必需的,但出于某种原因,它看起来像是在我点击提交时,因为它不允许我在没有填写输入的情况下提交。关于昵称,您到底需要什么功能。请注意,根据文档,“notEmpty”在2.7版之后被弃用。替换它的函数为“notBlank”。对于第一个问题没有任何解释,“允许免费”有效。我以前试过,问题是它不在昵称数组中,我刚刚注意到在ADmad post Thank all(不幸的是,我无法投票支持)上,实际上,“required”不是他想要的。从您链接到的文档中可以看出:“required和allowEmpty之间的差异可能会令人困惑。'required'=>true表示如果$this->data中没有此字段的键,则无法保存模型(使用isset执行检查);然而,'allowEmpty'=>false确保当前字段值为非空,如上所述。”