<?php
// composer
require_once('vendor/autoload.php');
use Aura\Input\Builder;
use Aura\Input\Filter;
use Aura\Input\Form;
use Aura\Filter\AbstractRule;
// if another field has a value, this field is marked as valid
class FieldHasValue extends AbstractRule
{
protected $message = 'FILTER_FIELD_HAS_VALUE';
public function validate($other_field = null)
{
$this->setParams(get_defined_vars());
// if the other field exists
if (isset($this->data->$other_field)) {
// and it has a value assigned
if ($this->data->$other_field) {
// mark as valid
return true;
}
}
return false;
}
public function sanitize($other_field = null)
{
// do nothing
return true;
}
}
class Dummy_Form extends Form {
// load our fields
function init() {
// load custom filters
$filter = $this->setupCustomFilters();
// create field
$field1 = $this->setField('field1','text');
$field2 = $this->setField('field2','radio');
// set options
$field2->setOptions(['1'=>'Yes','0'=>'No']);
// set field 2 to be valid if bool or field1 is filled in - ie field 2 is option if field 1 is filled in
// $filter->addSoftRule('field2',$filter::IS,"fieldHasValue",'field1'); // this works fine when uncommented!
$filter->addSoftRule('field2',$filter::IS,"any",[
["fieldHasValue","field1"],
["bool"]
]); // this fails when run
// set filter message
$filter->useFieldMessage('field2','Field 2 must be filled in or field 1 must be not blank');
}
// setup our custom filters
function setupCustomFilters() {
// get filter