我正在编写自定义验证规则。在我的表单中,我使用带有名为“ my-event”的验证组的规则来验证字段。我的规则之一是,如果选中名为“其他”的复选框,则需要填写文本字段“其他”。
我的请求已通过以下规则验证:
EventRequest.php
public function rules()
{
return [
'my-event.event-types' => 'required'
'my-event.event-type-other' => [
'string', new CheckboxIsValid($checkboxArray)
],
];
}
CheckboxIsValid是我编写的用于实现Laravel规则的帮助程序类:
class CheckboxIsValid implements Rule
{
public $checkboxArray;
public function __construct($checkboxArray)
{
$this->checkboxArray = $checkboxArray;
}
public function passes($attribute, $value)
{
if(in_array('other', $this->checkboxArray)) {
if($value) {
return true;
}
}
return false;
}
}
这将检查我的已选中复选框数组中是否包含“ other”。我想传递my-event.event-types
的值。我该怎么做?
答案 0 :(得分:0)
EventRequest.php扩展了FormRequest,后者扩展了Request,这将允许访问其他表单字段值:
$this->validationData()
我已经在EventRequest.php中访问了它,如下所示:
// Instantiate it in case form is submitted without any event types
$eventTypes = [];
if(isset($this->validationData()['my-event']['event-types'])){
$eventTypes = $this->validationData()['my-event']['event-types'];
}
然后可以将其传递给我的规则:
'my-event.event-types-other' => [
new CheckboxIsValid($teachingMethods, 'other')
],
在CheckboxIsValid的构造函数中:
public $checkboxArray;
public $field;
public function __construct($checkboxArray, $field)
{
$this->checkboxArray = $checkboxArray;
$this->field = $field;
}