Yii2 framework. The idea to create common behavior for common model:
if it's array trim all values in array.
I'm wondered why in Yii2 core doesn't exist such possibility. Or I'm wrong. Am I?
What problems could I face if I trim all fields?
You can create a behavior and attach it at your models.
1) Create the behavior TrimBehavior
in common/components
.
<?php
namespace common\components;
use yii\db\ActiveRecord;
use yii\base\Behavior;
class TrimBehavior extends Behavior
{
public function events()
{
return [
ActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate',
];
}
public function beforeValidate($event)
{
$attributes = $this->owner->attributes;
foreach($attributes as $key => $value) { //For all model attributes
$this->owner->$key = trim($this->owner->$key);
}
}
}
2) In your models add the following:
//...
use common\components\TrimBehavior;
//...
/**
* Returns a list of behaviors that this component should behave as.
*
* @return array
*/
public function behaviors()
{
return [
[
'class' => TrimBehavior::className(),
],
];
}
Trimming attributes it depends on business logic. If you really need it then it's ok.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With