Yii2ред рдкрд░рд┐рдЪрд┐рдд

рдкрд░рд┐рдЪрдп

рджреВрд╕рд░реЗ рджрд┐рди, рдПрдХ рдШрдЯрдирд╛ рдШрдЯреА, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдФрд░ рд▓реЛрдЧ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдПрдХ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдХрд╛рд▓рд╛ред

рдПрдХ рджрд┐рди рдмрд╛рдж, рд╣рдм рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдИ рджреА, рдЬрд┐рд╕рдХреЗ рдкрдврд╝рдиреЗ рд╕реЗ рдЕрдЬреАрдм рдкреНрд░рднрд╛рд╡ рдкреИрджрд╛ рд╣реБрдЖ, рдФрд░ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЗ рдмрд╛рдж Yii2 рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдкрд░, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

рд╢реБрд░реБрдЖрдд

рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реВрдЪреА:

- рдПрдб-рдСрди рд╕реЗ рдХреЛрд░ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ред рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджреАрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рднрд╛рдЧ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред

- рдЖрдзрд╛рд░ CComponent рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдкрд╣рд▓рд╛ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рдХрд╛рдо рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рдкрд╣рд▓реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред

- рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдмрдВрдз рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
$post->on('update', function($event) { // send email notification }); 

рдШрдЯрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
 $component = \Yii::createObject(array( 'class' => '\app\components\GoogleMap', 'apiKey' => 'xyz', //   'on eventName' => array('Event', 'run'), //   'as behaviorName' => array(/* Behavior config */), )); 

- рдПрдХ рдирдпрд╛ рджреГрд╢реНрдп рд╡рд░реНрдЧ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдорд╡реАрд╕реА рдврд╛рдВрдЪрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░
 <?php use yii\helpers\base\Html; /** *   $this      . *     $this->context * @var yii\base\View $this */ $this->title = 'Hello world'; ?> <h1><?php echo Html::encode($this->title); ?></h1> <p class="lead"> !</p> 
* рджреЗрдЦреЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

- рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд░реЗрдВрдбрд░ () рдХреБрдЫ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
 public function actionIndex() { echo $this->render('index'); } 

- рдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рджреЛ рдИрд╡реЗрдВрдЯреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ , рдПрдХреНрд╢рди , рдСрдиреЗрд╢рди
 public function init() { $this->on('beforeAction', function($event) { //   $event->isValid = false; }); } 

- рд╕реАрдлрд┐рд▓реНрдЯрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд┐рд▓реНрдЯрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ , рдЕрдм рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 public function behaviors() { return array( 'AccessControl' => array( 'class' => '\yii\web\AccessControl', 'rules' =>array(/*     */), ), ); } 

- рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╕рд╣рд╛рдпрдХ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ - рдкреЙрдкреБрд▓реЗрдЯ рд╡рд┐рдзрд┐
 public function actionLogin() { $model = new LoginForm(); if ($this->populate($_POST, $model) && $model->login()) { Yii::$app->response->redirect(array('site/index')); } echo $this->render('login', array( 'model' => $model, )); } 

- рдХреБрдЫ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕реЗрд╕ рдЬреЛрдбрд╝реЗ рдЧрдП: рдПрд░реЗрд╣реЗрд▓реНрдкрд░ , рд╕реНрдЯреНрд░рд┐рдВрдЧрд░реЗрд▓рдкрд░ , рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рд╣реЗрд▓реНрдкрд░ ред рд╕рднреА рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рдЕрдм рдПрд▓рдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣реБрд░реНрд░реЗ, рдореИрдВрдиреЗ рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред

- ActiveForm рд╡рд┐рдЬреЗрдЯ рдХреЛ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ CForm рдлреЙрд░реНрдо рдмрд┐рд▓реНрдбрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдм ActiveForm рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА ActiveField рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
 $form = $this->beginWidget('yii\widgets\ActiveForm', array( 'options' => array('class' => 'form-horizontal') )); echo $form->field($model, 'username')->textInput(); echo $form->field($model, 'password')->passwordInput(); echo $form->field($model, 'rememberMe')->checkbox(); echo Html::tag('div', Html::submitButton('Login', null, null, array('class' => 'btn btn-primary')), array( 'class' => 'form-actions' )); $this->endWidget(); 
* рдзреНрдпрд╛рди рджреЗрдВ: Html рдореЗрдВ :: рдЯреИрдЧ ($ рдЯреИрдЧ, $ рд╕рд╛рдордЧреНрд░реА, $ рд╡рд┐рдХрд▓реНрдк) - рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛!

ActiveRecord

"рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, ActiveRecord рдЕрдЫреВрддрд╛ рд░рд╣рд╛ рд╣реИред"
- рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд╕рдЪ рджреЗрдЦрд╛ - рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╕ рд▓рд┐рдпрд╛ рдФрд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ ActiveRecord рд▓рд┐рдЦрд╛ред

- рдореЙрдбрд▓ () рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУ

- рд╣рдЯрд╛рдП рдЧрдП CDbCriteria ред рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЗрд╕ рдкрд░ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред ActiveQuery рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ CActiveFinder рдФрд░ CDbCriteria рдХрд╛ рдПрдХ рд╕рдВрдХрд░ рд╣реИред
 //   ActiveQuery $query = Post::find(); //   $posts = $query->all(); //      $posts = $query ->where(array('status' => Post::DRAFT)) ->orderBy('time') ->all(); //    $post = $query ->where(array('id' => 10, 'status' => Post::READ)) ->one(); //  ,  where       $post = Post::find(array('id' => 10, 'status' => Post::READ)); //              $post = Post::find(10) ->where(array('status' => Post::READ)) ->one(); //      $posts = $query->indexBy('title')->all(); //     $posts = $query->asArray()->all(); 

- рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдм рд╕реНрдерд┐рд░ рд╣реИрдВ: getDb , tableName , find *, saveAll *, PrimaryKey ред рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИред

- рд╕рдВрдЪрд╛рд░, рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдмрд┐рдирд╛ред рд▓рд┐рдВрдХ рдЕрдм рдЧреЗрдЯрд░реНрд╕ рдЬреЛрдбрд╝рдХрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ
 class Post extends ActiveRecord { public function getCreator() { return $this->hasOne('User', array('id' => 'user_id')); } public function getComments() { return $this->hasMany('Comment', array('post_id' => 'id')); } public function getTrustComments($isTrust = true) { return $this->hasMany('Comment', array('post_id' => 'id')) ->where('status = :status', array( ':status' => $isTrust ? self::TRUST : self::UNTRUST, )) ->orderBy('id'); } } 

- рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЬреЛрдбрд╝рд╛ рд▓рд┐рдВрдХ () рдФрд░ рдЕрдирд▓рд┐рдВрдХ (), рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реЗрдЧрд╛
 $post = Post::find(1); $comment = new Comment(); $comment->text = 'Yii Framework is cool!'; $post->link('comments', $comment); 

- рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рд╕рдореВрд╣ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд░реВрдк рдореЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдФрд░ CDbCriteria рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдХреЛрдИ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕рд░рдгрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред рдЕрдм рдпреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдереИрддрд┐рдХ рд╡рд╛рд▓реЗ, рдХреНрд╡реЗрд░реА рдореЗрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
 class Post extends \yii\db\ActiveRecord { /** * @param ActiveQuery $query */ public static function byCreator($query, $userId) { $query->andWhere('user_id = :userId', array('userId' => $userId)); } /** * @param ActiveQuery $query */ public static function removed($query) { $query->andWhere('removed = 1'); } } $posts = Post::find()->removed()->all(); $myPosts = Post::find()->byCreator(Yii::$app->user->id)->all(); 


рд╕рдм

рдореИрдВ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ред рд▓реЗрдЦ рдПрдХ рдмрдбрд╝рд╛, рдПрдХ рдмрд╣реБрдд рдХреЛрдб рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрдЪ рдЧрдП рдФрд░ рдЗрд╕реЗ рдкрдврд╝реЗрдВрдЧреЗред

рд╕рдВрдЪрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗред

Source: https://habr.com/ru/post/In178917/


All Articles