반응형
1. 사용자 검증 모듈 만들기
app 폴더에 Validation 폴더를 만듭니다. 이 폴더는 검증 관련 모듈을 관리하는 폴더로 사용할 것입니다.
그리고, Validation 폴더에 UserValidation.php 파일을 만듭니다. isonlyHangul메소드는 한글만 입력하였는지 체크하는 메소드입니다.
<?php
namespace App\Validation;
class UserValidation
{
public function isonlyHangul( $text, $encode = 'utf-8' )
{
$check = true;
$len = mb_strlen($text,$encode);
for( $i = 0; $i < $len; $i++ )
{
$cha = mb_substr( $text, $i , 1, $encode );
if( !preg_match("/[\xA1-\xFE\xA1-\xFE]/", $cha ) )
{
$check = false;
break;
}
}
return $check;
}
}
2. 사용자 검증 모듈 등록
app\Config\Validation.php 파일에서 UserValidation::class를 등록해 줍니다. 주의하실 것이 상단에 use \App\Validation\UserValidation; 선언해 줍니다.
<?php
use \App\Validation\UserValidation;
public $ruleSets = [
//... 기존 검증 모듈..
UserValidation::class // 사용자모들등록
];
설정 예)
<?php
namespace Config;
use CodeIgniter\Validation\CreditCardRules;
use CodeIgniter\Validation\FileRules;
use CodeIgniter\Validation\FormatRules;
use CodeIgniter\Validation\Rules;
use \App\Validation\UserValidation;
class Validation
{
//--------------------------------------------------------------------
// Setup
//--------------------------------------------------------------------
/**
* Stores the classes that contain the
* rules that are available.
*
* @var string[]
*/
public $ruleSets = [
Rules::class,
FormatRules::class,
FileRules::class,
CreditCardRules::class,
UserValidation::class
];
/**
* Specifies the views that are used to display the
* errors.
*
* @var array<string, string>
*/
public $templates = [
'list' => 'CodeIgniter\Validation\Views\list',
'single' => 'CodeIgniter\Validation\Views\single',
];
//--------------------------------------------------------------------
// Rules
//--------------------------------------------------------------------
}
3. 구현
구현 참고)
아래 예제는 참고용이므로 실행시 작동은 안합니다. 커스텀하게 만든 검증 모듈인 UserValidation모듈을 활용하는
방법만 참고하시면 됩니다. ( isonlyHangul 부분 참고)
<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\BoardModel;
class Board extends BaseController
{
protected $bm;
public function __construct()
{
$this->bm = new BoardModel();
}
public function index()
{
$sch = ( $this->request->getVar("sch") )? $this->request->getVar("sch") : '';
$bm = $this->bm->get_all_data($sch);
$data = [
'board_data' => $bm['data'],
'pager' => $bm['pager'],
'sch' => $sch,
'param' => $this->request->uri->getQuery()
];
echo view("board/list",$data);
}
public function view($ss_board_id)
{
//$this->bm->get_data($ss_board_id);
//print_r($this->bm->get_data($ss_board_id));
//$this->request->getUserAgent()->getReferrer();
//echo $this->request->getUserAgent()->getReferrer();
$data = [
'data' => $this->bm->get_data($ss_board_id),
'param' => $this->request->uri->getQuery()
];
echo view("board/view",$data );
}
public function write()
{
echo view("board/write");
}
public function save()
{
$rules = [
'writer' => 'required|min_length[2]|isonlyHangul[writer]'
];
$errors = [
'writer' => [
'required' => '작성자를 입력하세요.',
'isonlyHangul' => '한글만 입력가능합니다.'
]
];
if (!$this->validate($rules, $errors))
{
//print_r($this->validator->getErrors());
echo $this->validator->getError('writer');
}
}
}
form에서 request한 값들 중에서 writer값을 검증하는 예입니다.
public function save()
{
$rules = [
'writer' => 'required|min_length[2]|isonlyHangul[writer]'
];
$errors = [
'writer' => [
'required' => '작성자를 입력하세요.',
'isonlyHangul' => '한글만 입력가능합니다.'
]
];
if (!$this->validate($rules, $errors))
{
//print_r($this->validator->getErrors());
echo $this->validator->getError('writer');
}
}
반응형
'소프트웨어 개발 > PHP' 카테고리의 다른 글
[코드이그나이터4] 직전 URL 구하기 referer url, 접속 에이전트 구하기, 모바일 여부 체크, 에이전트 정보 구하기 (0) | 2022.02.13 |
---|---|
[코드이그나이터4] mariadb/mysql insert_id 가져오기 (0) | 2022.02.13 |
[코드이그나이터4] 데이터를 1개의 행으로 가져오고 싶을 경우 getRow(); (0) | 2022.02.13 |
[코드이그나이터4] 페이지네이션 뷰 만들기/뷰 생성 (0) | 2022.02.12 |
[코드이그나이터4] 페이지네이션, 페이징처리 구현 - 모델에서 구현 (0) | 2022.02.12 |
댓글