laxity7 / yii2-trim-behavior
Behavior that truncates all spaces and other characters in all attributes in a model before validate
Installs: 3 278
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=7.4|>=8.0
- yiisoft/yii2: 2.*
Requires (Dev)
- phpunit/phpunit: ^9.1.4
This package is auto-updated.
Last update: 2024-12-02 20:22:40 UTC
README
This behavior automatically truncates all spaces and other characters in all attributes in a model before validate. The easiest way is to add this behavior to the parent class so that all attributes are always trimmed.
Note: Behavior automatically skips any non-string and empty values.
Install
Install via composer
composer require laxity7/yii2-trim-behavior
Or you may add dependency manually in composer.json:
"laxity7/yii2-trim-behavior": "*"
How to use
To use TrimBehavior, insert the following code to your Model/ActiveRecord class:
/** @inheritdoc */ public function behaviors(): array { return [ 'trimAttributes' => \laxity7\yii2\behaviors\TrimBehavior::class, // trim all attributes // ... other behaviors ]; }
You can also pass the following parameters:
- fields
string[]
(by default[]
) List of fields to process. By default all fields. - mask
string
(by default' \t\n\r �'
) Simply list all characters that you want to be stripped. You can use TrimBehavior::DEFAULT_MASK to combine your characters and defaults - once
string[]
(by defaulttrue
) Run the behavior once and detach after.
So, the complete list of settings will look like this:
/** @inheritdoc */ public function behaviors(): array { return [ [ 'class' => \laxity7\yii2\behaviors\TrimBehavior::class, 'fields' => ['foo', 'bar'], 'mask' => '_' . TrimBehavior::DEFAULT_MASK, 'once' => false, ], ]; }
If you want to trim only certain fields in a certain class, then better to use the filter in rules of validation
/** @inheritdoc */ public function rules() { return [ [['filedName1', 'filedName1'], 'filter', 'filter' => 'trim'], // ... other rules ]; }