CI 묻고 답하기

제목 validation에 대해서 궁금한게 있습니다
카테고리 CI 4 관련
글쓴이 dg_dong 작성시각 2022/02/08 01:13:05
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 7859   RSS
제가 하고싶은 부부은 컨트롤러 또는 모델에서 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

https://forum.codeigniter.com/thread-80163.html

벨리데이션 런을 수동으로 실행 시켜 처리 할수 있습니다.

dg_dong / 2022/02/08 09:49:37 / 추천 0
감사합니다 참고해서 진행해보겠습니다