| 제목 | validation에 대해서 궁금한게 있습니다 | ||
|---|---|---|---|
| 카테고리 | CI 4 관련 | ||
| 글쓴이 | dg_dong | 작성시각 | 2022/02/08 01:13:05 | 
| 
                         | 
                |||
                        제가 하고싶은 부부은 컨트롤러 또는 모델에서 Postman으로 보낸 데이터 형식을 validation을 하고싶습니다 하지만 데이터 포맷이 JSON으로 넘어와서 규격이 안맞는거 같습니다 실제 지금 동작은 validation이 동작되지 않습니다 
 
 
Post man에 요청 데이터입니다   
 {
        "Data": [
            {
                "b": "123",
                "c": "1"
            }
        ]
    }
 
모델입니다
<?php
namespace App\Models;
use CodeIgniter\Model;
use App\Controllers\Database\Qbuilder;
class TestModel extends Model
{
    protected $table      = 'abc';
    protected $primaryKey = 'a';
    // protected $useAutoIncrement = true;
    protected $returnType = 'object';
    protected $useSoftDeletes = false;
    protected $allowedFields = ['b','c'];
    protected $useTimestamps = false;
    protected $validationRules = [ // (1)
        'b' => 'required|min_length[4]|max_length[10]|in_list[에에,우우,그린라이트]',
        'c' => 'required|is_natural|less_than[150]',
    ];
    // 유효성 검사 실패시 에러 메세지.
    protected $validationMessages = [  // (2)
        'b' => [
            'required' => '이름이 필요합니다',
            'min_length' => '이름은 최소 4글자 이상입니다.',
            'max_length' => '이름은 최대 10글자 이하입니다.',
            'in_list' => 'ㅁㄴㅇㅁㄴㅇ'
        ],
        'c' => [
            'required' => '필수값입니다',
            'is_natural' => "나이는 자연수여야 합니다.",
            'less_than' => "정말 150세 이상이신가요?"
        ]
    ];
    public function test($data){
        $builder = $this->db->table('abc');
        return $builder->insert($data['Data'][0]);
    }
}
?>
 
 
컨트롤러 입니다
<?php
namespace App\Controllers;
use App\Models\TestModel;
class Test extends BaseController
{
    public function index()
    {
        $request_body = file_get_contents('php://input'); //payload data
        $data = json_decode($request_body,true);
        $richModel = new TestModel();
        $save_result = $richModel->test($data);
        $errors = $richModel->errors(); // (2)
        return $this->response->setJSON([
            'result' => $save_result,
            'errors' => $errors
        ]);
    }
}
 | 
                |||
| 다음글 | Codeigniter model에서 update시 쿼리... (3) | ||
| 이전글 | 라우팅관련해서 질문합니다. (7) | ||
| 
                             
                                테러보이
                                /
                                2022/02/08 09:05:51 /
                                추천
                                0
                             
                             | 
                    
| 
                             
                                dg_dong
                                /
                                2022/02/08 09:49:37 /
                                추천
                                0
                             
                            
                                감사합니다 참고해서 진행해보겠습니다
                             
                         | 
                    
https://forum.codeigniter.com/thread-80163.html
벨리데이션 런을 수동으로 실행 시켜 처리 할수 있습니다.