I made the validation in the config / validation.php with references from the official documentation https://codeigniter4.github.io/userguide/libraries/validation.html like this:
class Validation
{
....
public $user = [
'name' => [
'rules' => 'required'
],
'email' => [
'rules' => 'valid_email|required',
'errors' => [
'valid_email' => 'E-mail is not valid',
'required' => 'E-mail is required'
]
]
];
}
and then I call it on my controller like this:
....
class User extends ResourceController
{
public function create()
{
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
$country = $this->request->getPost('country');
$province = $this->request->getPost('province');
$city = $this->request->getPost('city');
$day_of_birth = $this->request->getPost('day_of_birth');
$password = $this->request->getPost('password');
$phone_number = $this->request->getPost('phone_number');
$photo = $this->request->getPost('photo');
$data = [
'name' => $name,
'email' => $email,
'country' => $country,
'province' => $province,
'city' => $city,
'day_of_birth' => $day_of_birth,
'password' => $password,
'phone_number' => $phone_number,
'photo' => $photo
];
$validate = $this->validation->run($data,'user');
$errors = $this->validation->getErrors();
if($errors){
return $this->fail($errors);
}
return $this->respond($data);
}
}
when i tested it using postman, I get a return like this:
the validation works fine if I do it in the controller, but I want to declare the validation in validation.php, someone please help me, whatever I write in validation.php then i call using $this->validation->run($data,'name')
always returns the same
You have not added the error message in the name required validation so maybe it's the problem so you must add an error message to the name.
Because validation in the message is important . Without any error messages, how can the user know what is the problem in the form.
Here is the customized function or sample of validation. change your function be like.
class Validation
{
public $user = [
'name' => [
'rules' => 'required',
'errors' => [
'required' => 'Name is required.'
]
],
'email' => [
'rules' => 'required|valid_email',
'errors' => [
'valid_email' => 'E-mail is not valid',
'required' => 'E-mail is required'
]
],
];
}