Bonsoir,
Je cherche à faire un formulaire à l'aide de $validate afin de contrôler les infos du visiteur avant l'envoi, cependant je n'arrive pas à rendre certains champs obligatoires.
J'aimerais que les champs "password", "done" et "gender" soient obligatoires, cependant je ne trouve pas ce qui permet de le faire dans la documentation. :/
De plus, je cherche à ce que l'utilisateur entre un password et une adresse mail de validations, comment faire? Uiliser beforeSave dans le model?
Voilà côté code :
//register.ctp (view)
<h2>Register</h2>
<?php
echo $form->create('User', array('url' => array('action' => 'register')));
echo $form->input("username", array("label" => "Login : ", "value" => ""));
echo $form->input("password", array("label" => "Password : ", "value" => ""));
//echo $form->input("password", array("label" => "Password confirm : ", "value" => ""));
echo $form->input("email", array("label" => "Email adress : ", "value" => ""));
//echo $form->input("email", array("label" => "Email confirm : ", "value" => ""));
echo "<label>Gender : </label>" . $this->Form->select('sex', array("M" => "Male", "F" => "Female"));
echo "<br /> <br />";
echo $this->Form->checkbox("done") . "<p style='display: inline;'> I accept the <a href='" . $this->Html->url(array('controller' => 'pages', 'action' => 'rules')) ."' target='_blank'>General Terms</a></p>";
echo "<br /><br />";
echo $form->end("Register");
?>
//user.php (model)
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
"email" => "email",
"username" => array(
"alphaNumeric" => array(
"rule" => "alphaNumeric",
"required" => true,
"message" => "You must use alphanumeric characters only",
),
"between" => array(
"rule" => array("between", "4", "15"),
"message" => "Your login must contains between 4 and 15 characters",
),
"isUnique" => array(
"rule" => "isUnique",
"message" => "Your login has already been taken"
),
),
"password" => array(
"rule" => "notEmpty",
"message" => "Your password is required",
),
"gender" => array(
"rule" => array("multiple"),
"message" => "You must specify a gender",
),
"done" => array(
"rule" => array("equalTo", 1),
"message" => "You must accept the general terms",
),
);
//function beforeSave() {
/*$this->data"User"]"password"] = Security::hash($this->data"User"]"password"], null, true);
return true;*/
//}
}
?>
//users_controller.php (controller)
function register() {
if($this->Session->read("Auth.User.id"))
{
$this->redirect("/");
} else {
if (isset($this->data)) {
$this->User->set($this->data);
if($this->User->validates())
{
$this->User->save($this->data);
$this->flash('Register successful! Click to continue','/');
} else {
$this->Session->setFlash("Error!");
}
}
}
$this->layout = "archives_default";
}
Savez-vous comment faire? Merci !