mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-03-17 06:59:51 +00:00
Adding missing afterValidate callback to behaviors, Fixes #3024
This commit is contained in:
parent
8fcb2a7653
commit
39715bcd89
3 changed files with 56 additions and 0 deletions
|
@ -285,6 +285,7 @@ class BehaviorCollection extends ObjectCollection implements CakeEventListener {
|
||||||
'Model.beforeFind' => 'trigger',
|
'Model.beforeFind' => 'trigger',
|
||||||
'Model.afterFind' => 'trigger',
|
'Model.afterFind' => 'trigger',
|
||||||
'Model.beforeValidate' => 'trigger',
|
'Model.beforeValidate' => 'trigger',
|
||||||
|
'Model.afterValidate' => 'trigger',
|
||||||
'Model.beforeSave' => 'trigger',
|
'Model.beforeSave' => 'trigger',
|
||||||
'Model.afterSave' => 'trigger',
|
'Model.afterSave' => 'trigger',
|
||||||
'Model.beforeDelete' => 'trigger',
|
'Model.beforeDelete' => 'trigger',
|
||||||
|
|
|
@ -146,6 +146,17 @@ class ModelBehavior extends Object {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* afterValidate is called just after model data was validated, you can use this callback
|
||||||
|
* to perform any data cleanup or preparation if needed
|
||||||
|
*
|
||||||
|
* @param Model $model Model using this behavior
|
||||||
|
* @return mixed False will stop this event from being passed to other behaviors
|
||||||
|
*/
|
||||||
|
public function afterValidate(Model $model) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* beforeSave is called before a model is saved. Returning false from a beforeSave callback
|
* beforeSave is called before a model is saved. Returning false from a beforeSave callback
|
||||||
* will abort the save operation.
|
* will abort the save operation.
|
||||||
|
|
|
@ -194,6 +194,29 @@ class TestBehavior extends ModelBehavior {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* afterValidate method
|
||||||
|
*
|
||||||
|
* @param Model $model
|
||||||
|
* @param bool $cascade
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function afterValidate(Model $model) {
|
||||||
|
$settings = $this->settings[$model->alias];
|
||||||
|
if (!isset($settings['afterValidate']) || $settings['afterValidate'] == 'off') {
|
||||||
|
return parent::afterValidate($model);
|
||||||
|
}
|
||||||
|
switch ($settings['afterValidate']) {
|
||||||
|
case 'on':
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case 'test':
|
||||||
|
$model->data = array('foo');
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* beforeDelete method
|
* beforeDelete method
|
||||||
*
|
*
|
||||||
|
@ -966,6 +989,27 @@ class BehaviorCollectionTest extends CakeTestCase {
|
||||||
$this->assertSame($Apple->whitelist, array('unknown', 'name'));
|
$this->assertSame($Apple->whitelist, array('unknown', 'name'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testBehaviorValidateAfterCallback method
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testBehaviorValidateAfterCallback() {
|
||||||
|
$Apple = new Apple();
|
||||||
|
|
||||||
|
$Apple->Behaviors->attach('Test');
|
||||||
|
$this->assertSame($Apple->validates(), true);
|
||||||
|
|
||||||
|
$Apple->Behaviors->attach('Test', array('afterValidate' => 'on'));
|
||||||
|
$this->assertSame($Apple->validates(), true);
|
||||||
|
$this->assertSame($Apple->validationErrors, array());
|
||||||
|
|
||||||
|
$Apple->Behaviors->attach('Test', array('afterValidate' => 'test'));
|
||||||
|
$Apple->data = array('bar');
|
||||||
|
$Apple->validates();
|
||||||
|
$this->assertEquals(array('foo'), $Apple->data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* testBehaviorValidateMethods method
|
* testBehaviorValidateMethods method
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue