私はcodeIgniterの初心者で、最初から行き詰まっています。 HMVC拡張機能を使用していますが、検証中に次のエラーが発生します。
フィールド名パスワードに対応するエラーメッセージにアクセスできません。(pword_check)
どんな助けでも大歓迎です
コード:
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は、Codeingitore 3のフォーム検証の一部ではなくなりました
検証ルールから_xss_clean
_を削除するだけです
_$this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check');
_
本当にそのルールを適用する必要がある場合は、セキュリティヘルパーもロードする必要があります。これには、通常の関数としてxss_clean()
が含まれているため、検証ルールとしても使用できます。
_application/config/autoload.php :
_に移動
_$autoload['helper'] = array('security');
_
または、フォームの検証前
_$this->load->helper('security');
_
こんにちはみんな私はhmvc codeIgniterでcall_backsを操作するためのソリューションを見つけました。他の人のために解決策を投稿したいと思います。
ソリューション:
1。ライブラリフォルダーにMY_Form_validation.phpファイルを作成し、次のコードをそのフォルダーに貼り付けます。
_ if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Form_validation extends CI_Form_validation
{
function run($module = '', $group = '')
{
(is_object($module)) AND $this->CI = &$module;
return parent::run($group);
}
}
_
if ($this->form_validation->run() == FALSE)
をif ($this->form_validation->run($this) == FALSE)
に変更します。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;
}
}
//うまく機能している
今後の検索用。このエラーが表示されたときに確認する必要がある2つの3事項があります。
コールバック関数の名前が
$ 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;
}
}
*公開関数pword_check($ str){
* set_message( 'pword_check'、 '%sフィールド...
Codeigniter 2.Xではこれを行うことができます
$ this-> form_validation-> run($ this)== TRUE
3.xでは次のようになります
$ this-> form_validation-> run()== TRUE
そして、この2行のコードを__construct()に追加する必要があります
function __construct(){
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->CI =& $this;
}
このファイルをapplication/libraries /MY_Form_validation.phpに追加します
<?php
class MY_Form_validation extends CI_Form_validation{
public $CI;
}
乾杯! 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
参考のために。
このエラーの理由は、セキュリティヘルパーをロードしなかったためです。次に、configフォルダーのautoload.phpでセキュリティヘルパーを有効にする方法、またはこの投稿の最後の行で述べたようにヘルパーを直接ロードする方法を示します。
そして、すべてにもかかわらず、本当にそれが必要な場合は、application/config/autoload.phpに移動します。
$ autoload ['helper'] = array( 'security');または、フォーム検証の前に$ this-> load-> helper( 'security');