Sie können ein Verhalten erstellen und sie an Ihren Modellen befestigen.
1) Erstellen Sie das Verhalten 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 Ihrer Modelle fügen Sie folgendes:
//...
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-Attribute auf Business-Logik abhängt. Wenn Sie es wirklich brauchen, dann ist es in Ordnung.
Sie könnten die 'trim' Regel verwenden, http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#trim – Alex
ja, aber in diesem Fall muss ich diese Regel für schreiben jedes Modell und für alle Felder, die ich trimmen möchte. Ich möchte es einmal für alle Modelle richtig machen –