Php 具有默认域的InputHelper电子邮件字段
我有一个简单的页面,只有一个输入字段,用户在其中输入他们的电子邮件地址,以便预先注册。但是页面布局是这样设计的,用户只插入电子邮件的左边部分。(我们只接受具有特定电子邮件域的用户) 因此,页面布局(电子邮件输入部分)看起来像:Php 具有默认域的InputHelper电子邮件字段,php,validation,cakephp,Php,Validation,Cakephp,我有一个简单的页面,只有一个输入字段,用户在其中输入他们的电子邮件地址,以便预先注册。但是页面布局是这样设计的,用户只插入电子邮件的左边部分。(我们只接受具有特定电子邮件域的用户) 因此,页面布局(电子邮件输入部分)看起来像: App::uses('Validation', 'Utility'); ... public $validate = array( 'email' => array( 'required' => array(
App::uses('Validation', 'Utility');
...
public $validate = array(
'email' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Email field cannot be empty'
),
'email' => array(
'rule' => array('validatePreRegistrationEmail'),
'message' => 'The email is not valid.'
)
)
);
...
public function validatePreRegistrationEmail($data)
{
$email = current(array_values($data)) . '@defaultdomain.com';
return Validation::email($email);
}
[输入框]@defaultdomain.com
问题是:我创建了一个名为PreRegistration的模型,映射到数据库上的相应表。到目前为止,我保存的唯一东西就是插入的电子邮件。因此,在模型的验证器中,我有以下代码:
public $validate = array(
'email' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Email field cannot be empty'
),
'email' => array(
'rule' => array('email'),
'message' => 'The email is not valid.'
)
)
);
并且认为:
echo $this->Form->input('email', array(
'class' => 'input_box',
'value' => $input_box_default_text,
'id' => 'email',
'label' => false,
'div' => false
));
问题是验证器正在验证文本字段,希望用户在域中插入常规电子邮件(当然是duh)。为了让cakephp与默认域一起验证文本字段,我可以做什么?或者按照@cske的建议修改数据(但是修改
控制器::$request::$data
或者模型::$data
而不是$\u POST
),即在保存/验证之前将域部分附加到用户输入中,然后将完整的电子邮件地址存储在数据库中,或者使用自定义验证规则,该规则仅将域部分用于验证目的,例如:
App::uses('Validation', 'Utility');
...
public $validate = array(
'email' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Email field cannot be empty'
),
'email' => array(
'rule' => array('validatePreRegistrationEmail'),
'message' => 'The email is not valid.'
)
)
);
...
public function validatePreRegistrationEmail($data)
{
$email = current(array_values($data)) . '@defaultdomain.com';
return Validation::email($email);
}
按照@cske的建议修改数据(但修改
控制器::$request::$data
或模型::$data
,而不是$\u POST
),即在保存/验证之前将域部分附加到用户输入,并将完整的电子邮件地址存储在数据库中,或者使用仅将域部件用于验证目的的自定义验证规则,例如:
App::uses('Validation', 'Utility');
...
public $validate = array(
'email' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Email field cannot be empty'
),
'email' => array(
'rule' => array('validatePreRegistrationEmail'),
'message' => 'The email is not valid.'
)
)
);
...
public function validatePreRegistrationEmail($data)
{
$email = current(array_values($data)) . '@defaultdomain.com';
return Validation::email($email);
}
简单地
$\u POST['email']。='@defaultdomain.com'
,在验证开始之前,请始终提及您的确切CakePHP版本。简单地$\u POST['email']。='@defaultdomain.com'
,在验证开始之前,请始终提及您的确切CakePHP版本。