Je suis un nouveau codeIgniter et je viens de me coincer au tout début. J'utilise l'extension HMVC et lors de la validation, j'obtiens l'erreur suivante:
Impossible d'accéder à un message d'erreur correspondant à votre nom de champ Mot de passe. (Pword_check)
toute aide serait grandement appréciée
Code:
public function submit()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|max_length[30]|xss_clean');
$this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check|xss_clean');
if ($this->form_validation->run() == FALSE)
{
$this->login();
}
else
{
echo 'Success'; die();
}
}
public function pword_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message('pword_check', 'The %s field can not be the Word "test"');
return FALSE;
}
else
{
return TRUE;
}
}
xss_clean ne fait plus partie de la validation de formulaire dans Codeingitore 3
Il suffit de supprimer xss_clean
de votre validation au roul
$this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check');
Si vous devez réellement appliquer cette règle, vous devez également charger également Security Helper, qui contient xss_clean()
en tant que fonction normale et peut donc également être utilisé comme règle de validation.
aller à application/config/autoload.php :
$autoload['helper'] = array('security');
Ou, avant la validation de votre formulaire
$this->load->helper('security');
public function pword_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message( __FUNCTION__ , 'The %s field can not be the Word "test"');
return FALSE;
}
else
{
return TRUE;
}
}
// ça marche bien
Pour les recherches futures. Il y a deux 3 choses à vérifier lorsque cette erreur s'affiche.
Vérifiez le nom de la fonction de rappel si elle est identique à celle du
$ this-> form_validation-> set_rules ('pword', 'Password', 'required | max_length [30] | callback _pword_check
public function pword_check($str){
if ($str == 'test'){
$this->form_validation->set_message('pword_check', 'The %s field can not be the Word "test"');
return FALSE;
}
else{
return TRUE;
}
}
* fonction publique pword_check ($ str) {
* set_message ('pword_check', 'Le champ% s ...
Dans codeigniter 2.X vous pouvez le faire
$ this-> form_validation-> run ($ this) == TRUE
Dans 3.x cela devrait être comme ça
$ this-> form_validation-> run () == TRUE
et vous devez ajouter ces deux lignes de codes sur __construct ()
function __construct(){
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->CI =& $this;
}
Ajoutez ce fichier sur votre application/libraries/MY_Form_validation.php
<?php
class MY_Form_validation extends CI_Form_validation{
public $CI;
}
À votre santé! Voir https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/src/f77a3fc9a6fd?at=codeigniter-3.x
https://www.youtube.com/watch?v=pp4Y_bIhASY&list=PLBEpR3pmwCayNcTCUWlUToK4qIQfFQCCm&index=8
Pour référence.
La raison de cette erreur estvous n’avez pas chargé l’assistant de sécurité, voici comment activer l’assistant de sécurité Avec autoload.php dans le dossier de configuration ou vous pouvez directement charger l’aide comme indiqué à la dernière ligne de ce message.
Et si, malgré tout, vous en avez vraiment besoin, allez à application/config/autoload.php:
$ autoload ['helper'] = array ('sécurité'); Ou, avant la validation de votre formulaire $ this-> load-> helper ('sécurité');