mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Fix whitelist to be modifiable from behaviors to work with validate.
This commit is contained in:
parent
60b0893c79
commit
c621985f69
2 changed files with 47 additions and 1 deletions
|
@ -249,7 +249,11 @@ class ModelValidator implements ArrayAccess, IteratorAggregate, Countable {
|
||||||
return $model->validationErrors;
|
return $model->validationErrors;
|
||||||
}
|
}
|
||||||
|
|
||||||
$fieldList = isset($options['fieldList']) ? $options['fieldList'] : array();
|
$fieldList = $model->whitelist;
|
||||||
|
if (empty($fieldList) && !empty($options['fieldList'])) {
|
||||||
|
$fieldList = $options['fieldList'];
|
||||||
|
}
|
||||||
|
|
||||||
$exists = $model->exists();
|
$exists = $model->exists();
|
||||||
$methods = $this->getMethods();
|
$methods = $this->getMethods();
|
||||||
$fields = $this->_validationList($fieldList);
|
$fields = $this->_validationList($fieldList);
|
||||||
|
|
|
@ -612,6 +612,30 @@ class ModelValidationTest extends BaseModelTest {
|
||||||
$this->assertEquals(0, $joinRecords, 'Records were saved on the join table. %s');
|
$this->assertEquals(0, $joinRecords, 'Records were saved on the join table. %s');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testValidateWithFieldListAndBehavior() {
|
||||||
|
$TestModel = new ValidationTest1();
|
||||||
|
$TestModel->validate = array(
|
||||||
|
'title' => array(
|
||||||
|
'rule' => 'alphaNumeric',
|
||||||
|
'required' => true
|
||||||
|
),
|
||||||
|
'name' => array(
|
||||||
|
'rule' => 'alphaNumeric',
|
||||||
|
'required' => true
|
||||||
|
));
|
||||||
|
$TestModel->Behaviors->attach('ValidationRule', array('fields' => array('name')));
|
||||||
|
|
||||||
|
$data = array(
|
||||||
|
'title' => '',
|
||||||
|
'name' => '',
|
||||||
|
);
|
||||||
|
$result = $TestModel->save($data, array('fieldList' => array('title')));
|
||||||
|
$this->assertFalse($result);
|
||||||
|
|
||||||
|
$expected = array('title' => array('This field cannot be left blank'), 'name' => array('This field cannot be left blank'));
|
||||||
|
$this->assertEquals($expected, $TestModel->validationErrors);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test that saveAll and with models with validation interact well
|
* test that saveAll and with models with validation interact well
|
||||||
*
|
*
|
||||||
|
@ -2380,3 +2404,21 @@ class ModelValidationTest extends BaseModelTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Behavior for testing validation rules.
|
||||||
|
*/
|
||||||
|
class ValidationRuleBehavior extends ModelBehavior {
|
||||||
|
|
||||||
|
public function setup(Model $Model, $config = array()) {
|
||||||
|
$this->settings[$Model->alias] = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function beforeValidate(Model $Model, $options = array()) {
|
||||||
|
$fields = $this->settings[$Model->alias]['fields'];
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$Model->whitelist[] = $field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue