stankata90 / yii2-rules-generator
The Rules Generator for the Yii framework
Installs: 91
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=7.2
- yiisoft/yii2: >=2.0.0
This package is auto-updated.
Last update: 2024-11-08 02:17:36 UTC
README
Generate quick and easy arrays for model rules, auto-complete tips for validators and their options.
Highlights
- Simple installation
- Simplify things
Installation
Install in the usual way with Composer. Add the following to the require section of your composer.json file:
"stankata90/yii2-rules-generator": "*"
or run
composer require stankata90/yii2-rules-generator
Documentation
Example standard model file:
<?php namespace frontend\models; use Yii; use yii\base\Model; /** * ContactForm is the model behind the contact form. */ class ContactForm extends Model { public $name; public $email; public $subject; public $body; public $verifyCode; /** * {@inheritdoc} */ public function rules() { return [ // name, email, subject and body are required [ [ 'name', 'email', 'subject', 'body' ], 'required' ], // email has to be a valid email address [ 'email', 'email' ], // verifyCode needs to be entered correctly [ 'verifyCode', 'captcha' ], ]; } } ?>
Install the Generator in model
To access the generator, you need to use the trait RulesGenerator
<?php namespace frontend\models; use stankata90\Yii2RulesGenerator\RulesGenerator; use Yii; use yii\base\Model; /** * ContactForm is the model behind the contact form. */ class ContactForm extends Model { use RulesGenerator; public $name; public $email; public $subject; public $body; public $verifyCode; /** * {@inheritdoc} */ public function rules() { return [ // name, email, subject and body are required [ [ 'name', 'email', 'subject', 'body' ], 'required' ], // email has to be a valid email address [ 'email', 'email' ], // verifyCode needs to be entered correctly [ 'verifyCode', 'captcha' ], ]; } } ?>
Using the generator
After using trait, another "rulesGenerator" method is presented in the context of the model. Using this method we will generate arrays with rules for yii2.
<?php class ContactForm extends Model { use RulesGenerator; public $name; public $email; public $subject; public $body; public $verifyCode; /** * {@inheritdoc} */ public function rules() { $r = $this->rulesGenerator(); $r->required([ 'name', 'email', 'subject', 'body' ]); $r->email('email'); $r->string('name')->min(10)->max(100)->tooShort('To short message')->tooLong('To long message'); $r->captcha('verifyCode'); // using custom in rule $r->string('name_2')->custom('min', 10)->custom('max', 100)->custom('tooShort', 'To short message')->custom('tooLong', 'To long message'); return $this->rulesGenerator()->getRules(); } } ?>
Create a Template.
You can create templates with initial rule settings, this would save unnecessary repetition of rules. To create a template, extend the Custom_.php file no matter which folder it is in. For example, "frontend\rules\StringRules.php"
<?php namespace frontend\rules; use stankata90\Yii2RulesGenerator\rules\Custom_; class StringRules extends Custom_ { public function template_string10() { return $this->rulesGenerator()->string( $this->getAttributes() )->max(10); } public function template_string255() { return $this->rulesGenerator()->string( $this->getAttributes() )->max(255); } public function template_string100() { return $this->rulesGenerator()->string( $this->getAttributes() )->max(100); } } ?>
Using a Template.
public function rules() { $r = $this->rulesGenerator(); $r->required([ 'name', 'email', 'subject', 'body' ]); $r->email('email'); $r->string('name')->min(10)->max(100)->tooShort('To short message')->tooLong('To long message'); $r->captcha('verifyCode'); // using custom in rule $r->string('name_2')->custom('min', 10)->custom('max', 100)->custom('tooShort', 'To short message')->custom('tooLong', 'To long message'); // use the string100 template and add more settings $customString = ( new StringRules('name' ) )->template_string100()->message('Custom message'); // use the string255 template $customString255 = ( new StringRules('name' ) )->template_string255(); // send $customString and $customString255 to rulesGenerator before get all the rules return $this->rulesGenerator( [ $customString, $customString255 ] )->getRules(); }