我正在开发一个寄存器表单,但我不知道如何在 cakephp 中对控制器类中的寄存器表单进行验证。
型号类别:
用户.php
<?php
class User extends AppModel
{
var $name='User';
//var $useTable = false;
var $validate= array(
'username'=>array(
'rule'=>'notEmpty',
'required'=>true,
'message'=>'Enter your name'
),
'email'=>array(
'email'=>array(
'rule'=>'email',
'message'=>'Enter a valid emial address'
),
'email'=>array(
'rule'=>'notEmpty',
'required'=>true,
'message'=>'Enter your email address'
)
),
'password'=>array(
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphabets and numbers only'
),
'password' => array(
'rule' => array('minLength', '8'),
'message' => 'Minimum 8 characters long'
),
),
'firstname'=>array(
'rule'=>'notEmpty',
'required'=>true,
'message'=>'Enter your firstname'
),
'lastname'=>array(
'rule'=>'notEmpty',
'required'=>true,
'message'=>'Enter your lastname'
),
);
**控制器类:
用户控制器.php**
<?php
class UsersController extends AppController
{
var $name = 'Users';
function send(){
if(!empty($this->data)){
$this->User->set($this->data);
if($this->User->validates()){
if(!empty($this->data['User']['username'])) {
$this->username->from = $this->data['User']['username'] ;
}
else{
$this->username->from = $this->data['User']['username'] .
' <' . $this->data['User']['username'] . '>';
$this->render('success');
}
}
else {
$this->render('register');
}
}
}
}
用户注册视图*注册.ctp*
<h3>Registration Form<h3>
<form action="../users/register" method="POST" name="form">
UserName:<input type="text" name="username">
Password:<input type="password" name="password">
Email:<input type="text" name="email">
FirstName:<input type="text" name="firstname">
LastName:<input type="text" name="lastname">
<input type="submit" value="Register">
</form>
请帮助我如何在 CakePHP 中进行验证。
创建一个名为 register() 的操作并创建视图 register.ctp。您的注册代码看起来像这样 -
function register(){
if(!empty($this->data)){
$this->User->create();
if($this->User->save($this->data)){
$this->Session->setFlash("User saved!");
$this->redirect('/login');
}
else{
$this->Session->setFlash("Unable to save now, Try later!");
}
}
}
现在,当您尝试保存数据时,如果在模型上定义验证规则,则数据将自动验证。
在你的
代码中,你还没有写任何用于保存数据的代码.....如果您要保存或编辑数据..您的模型将在您编写 var $validate
时自动处理验证在您的模型代码中...
-
如果要保存数据,则需要分配验证。 true 激活验证。 默认验证方式设置为 True。
$this->User->save($this->data) //to $this->User->save($this->data , true ) //or false - set the validation here // your function needs to be public public function register(){ if(!empty($this->request->data)){ if($this->User->save($this->request->data)){ //save data else{ //data didn't save } } }
-
在某些情况下,例如创建或更新,您需要设置要分配验证行为的位置。 例如,在创建或更新时保存。
-
在您的模型中,
'required'=>true,
用于其他原因。使用"规则"=>"不空",用于所需的输入 -
您的表单不是 cakephp 验证的标准:创建您的表单并输入基于 cakephp,这样您将拥有清晰的代码并使作业可用于您的验证
<?php echo $this->Form->create('User', array('url' => array('controller' => 'users', 'action' => 'register')));?> <fieldset> <legend><?php echo __('Register User'); ?></legend> <div class="seven columns"> <?php echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->input('first_name'); echo $this->Form->input('last_name'); echo $this->Form->input('phone_number'); echo $this->Form->input('email'); echo $this->Form->input('address1'); echo $this->Form->input('address2'); ?> </div> </fieldset> </div> <?php echo $this->Form->end(__('Register'));?>
-
删除变量 $name = "用户"; =>此行已默认设置
-
模型:变量应该是公共的
var $name='User'; var $validate= array(); //change them to public $name='User'; public $validate= array();