要向Laravel添加新验证,我已经这样做了:
在customValidation.php
app/start/
的新文件
然后将其包含在app/start/global.php
中,并使用echo()
对其进行测试,结果正常。所以它现在被加载到应用程序中。
然后我编写了以下代码来验证Laravel中的复选框:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
class customValidate extends Illuminate\Validation\Validator
{
public function validateCheckbox($attribute, $value, $parameters)
{
//if(isset($value)) { return true; } else { return true; }
echo "this is the: " . $value;
}
}
/**
* Resolvers for Custom Validations
*/
Validator::resolver(function($translator, $data, $rules, $message){
return new customValidate($translator, $data, $rules, $message);
});
但是,在我的验证规则中,我定义了:
`array('sex'=>'checkbox')`
但它不起作用。什么都没发生。不会抛出任何错误。该应用程序的行为就像它根本没有执行该功能。此外,当我在函数内回应某些东西时,没有任何东西得到回应,这是该函数根本没有被调用的另一个证据。
答案 0 :(得分:5)
我会为此创建自定义app/validators
文件夹。
1,创建app/validators/CustomValidate.php
<?php
class CustomValidate extends Illuminate\Validation\Validator
{
public function validateCheckbox($attribute, $value, $parameters)
{
echo "this is the: " . $value;
}
}
2,运行php artisan optimize
或composer dumpautoload
3,某处注册您的自定义验证程序。也许将app/validators.php
添加到start/global.php
Validator::resolver(function($translator, $data, $rules, $message){
return new CustomValidate($translator, $data, $rules, $message);
});
4,验证
$rules = ['agreed' => 'checkbox'];
$data = ['agreed' => 0];
$v = Validator::make($data, $rules);
dd($v->passes());
答案 1 :(得分:0)
提交表单时,收音机未设置为初始状态,这使得Laravel不会查找该项目的验证器。所以,它没有任何解决方法。我做的是我只是在无线电中添加了一个初始状态,然后就可以了。
很像Andreyco说的