Yii рдореЗрдВ рдкреНрд░рд╕рдВрдЧ-рд╕рдВрд╡реЗрджреА рд░реВрдк

рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреБрдж рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЕрдзрд┐рдорд╛рдирддрдГ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдХреНрдпреЛрдВ рддрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢реАрд░реНрд╖рдХ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо Yii рдореЗрдВ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд▓реЗрдЦ рдПрдХ рд╕рдорд╛рди рд░реВрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдиреВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╛рдИрдВ рдУрд░ рдПрдХ рдмрдЯрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рд╕рдВрджрд░реНрдн рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЪрдпрди рдмреЙрдХреНрд╕:



рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:



рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рд╡рд┐рдХрд▓реНрдк рдХреНрдпреЛрдВ рдЪреБрдирд╛ рдЧрдпрд╛? рдпрд╣ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЖрдЗрдЯрдо рдХреЗ рдЪрдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдк CGridView рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ, рдЦреЛрдЬ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдЪреБрдирдирд╛ рд╣реИред
рддреЛ, рдЗрд╕ Yiichnitsa рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА:

рдЕрдм, рдзреИрд░реНрдп рд░рдЦреЗрдВ рдФрд░ рдЦрд╛рдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ menuController.php рдХрдВрдЯреНрд░реЛрд▓рд░, рд╡реНрдпреВ рдлрд╛рдЗрд▓ _form.php рдФрд░ Menu.php рдореЙрдбрд▓ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдХрд┐ рдХреМрди рдХреМрди рд╣реИ, рдпрд╣ рд╕рдм рдПрдХ рдорд╛рдирдХ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб Gii , Gee рд╣реИред

рдореЙрдбрд▓ (Menu.php)


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдореЙрдбрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдИрдбреА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдореЙрдбрд▓ рдореЗрдВ (рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреА), рдкреНрд░рдХрд╛рд░ рдФрд░ data_id рдлрд╝реАрд▓реНрдб рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЛрдиреЛрдВ рдкреВрд░реНрдгрд╛рдВрдХред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╡рд╣ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдбреЗрдЯрд╛_рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣реИред рдЖрдЗрдП afterFind () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЧрддрд┐рд╢реАрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╕рд░рдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рд╕рдВрдХреАрд░реНрдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдо ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рджреГрд╢реНрдп рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред

static $types = array( 1 => array("name" => "", "model" => "Pages", "view" => "pages_grid"), 2 => array("name" => "", "model" => "Docs", "view" => "docs_grid"), 3 => array("name" => "", "model" => "Cats", "view" => "cats_grid"), ); public static function getSimpleTypes() { //   .   DropDownList $st = array(); foreach (Menu::$types as $key => $value) $st[$key] = $value["name"]; return $st; } var $data_name; public function afterFind() { $dataModel = $types[$this->type]['model']::model()->findByPk($this->data_id); $this->data_name = $dataModel->title; //   $data_name    parent::afterFind(); } 

рдпрд╣ рдореЙрдбрд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

рдлрд╝реЙрд░реНрдо рджреЗрдЦреЗрдВ (_form.php)


рд╣рдо рдЕрдкрдиреЗ рдлреЙрд░реНрдо рдХреА рд╡реНрдпреВ рдлрд╛рдЗрд▓ _form.php рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ

 <!--    --> <?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array( 'id'=>'menu-form', 'enableAjaxValidation'=>false, 'type' => 'horizontal', )); ?> <!--       --> <?php echo $form->errorSummary($model);?> <?php echo $form->textFieldRow($model,'name');?> <!--  ,    data_id --> <?php echo $form->textField($model,'data_id',array('class'=>'hide')); ?> <!--        bootstrap--> <div class="control-group"> <div class="control-label"> <?=$form->labelEx($model,'type')?> </div> <div class="controls"> <div class="input-append"> <?php echo $form->dropDownList($model,'type',Menu::getSimpleTypes());?> <button class="btn" id="data-select-btn" data-loading-text="..." type="button"><i class="icon-list"></i></button> </div> </div> </div> <!--   ,    .     Update,   ,  --> <div id="data-info" class="alert alert-success controls <?if($model->isNewRecord):?>hide<?endif;?>"> <i class="icon-file"></i> <span class="info"> <?if(!$model->isNewRecord) echo $model->data_name?> </span> </div> <!--  /--> <div class="form-actions"> <?php $this->widget('bootstrap.widgets.TbButton', array( 'buttonType'=>'submit', 'type'=>'primary', 'label'=>$model->isNewRecord ? 'Create' : 'Save', )); ?> </div> <?php $this->endWidget(); ?> <!--      --> <?php $this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'dataModal')); ?> <div class="modal-header"> <a class="close" data-dismiss="modal">├Ч</a> <h4><?=Yii::t("menu", " ")?></h4> </div> <div class="modal-body"></div> <div class="modal-footer"> <?php $this->widget('bootstrap.widgets.TbButton', array( 'label'=>Yii::t("menu", ""), 'url'=>'#', 'htmlOptions'=>array('data-dismiss'=>'modal'), )); ?> </div> <?php $this->endWidget(); ?> <script> //       function selectData(id, name) { $("#Menu_data_id").val(id); $("#data-info .info").html(name); $("#data-info").show(); $('#dataModal').modal("hide"); } //  data_id     $('#Menu_type').change(function(){ $("#Menu_data_id").val(""); $("#data-info").hide(); }) //         ,   AJAX $('#data-select-btn').click(function(){ var buttn = this; $(buttn).button('loading'); $.ajax({ url: "<?php echo $this->createAbsoluteUrl('menu/loadData') ?>", cache: false, data: "type="+$("#Menu_type").val(), success: function(html){ $(".modal-body").html(html); $(buttn).button('reset'); $('#dataModal').modal().css({ width: 'auto', 'margin-left': function () { return -($(this).width() / 2); }, }); } }); }) </script> 

рджрд░рдЕрд╕рд▓ рдпрд╣ рдкреВрд░реА рдлреЙрд░реНрдо рдлрд╛рдЗрд▓ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рддрддреНрд╡ AJAX рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдХрд╛рд░реНрдп рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдиреВ / рд▓реЛрдбрдбреИрдЯ рдПрдХреНрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:

рдирд┐рдпрдВрддреНрд░рдХ (menuController.php)


  public function actionLoadData($type) { $model_name = Menu::$types[$type]['model']; $model = new $model_name('search'); //      if(isset($_GET[$model_name])) //          $model->attributes=$_GET[$model_name]; $this->renderPartial(Menu::$types[$type]['view'],array( 'model'=>$model, ), false, true); //   $processOutput = true,      . } 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рд░реЗрдВрдбрд░рдкрд╛рд░реНрдЯрд┐рдпрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ $ processOutput = true рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рдЬреЗрдЯреНрд╕ рд╕реЗ рдЬреБрдбрд╝реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдВрдЧреАред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрдм $ processOutput рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд▓реЛрдб рдХреА рдЬрд╛рдПрдВрдЧреА, рдЬрд┐рдирдореЗрдВ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JQuery рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ NLSClientScript рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдмрд╛рд░ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВред

рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ (docs_grid.php)


рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдорд░реНрдкрд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ / рд╕рдВрд░рдХреНрд╖рд┐рдд / рд╡рд┐рдЪрд╛рд░ / рдореЗрдиреВ рд╣реЛрдЧрд╛
рдЕрдм рд╣рдо рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВ рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЖрдк рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ CGridView рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ рд╣реИрдВ: рдЦреЛрдЬ, рдкреГрд╖реНрдард╛рдВрдХрди рдФрд░ рдЫрдВрдЯрд╛рдИред

 $this->widget('bootstrap.widgets.TbGridView',array( 'id'=>'docs-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'id', 'title', 'updated', array( 'class'=>'CButtonColumn', 'template' => "{insert}", 'buttons' => array( "insert" => array( 'label' => "", 'options' => array( "class" => "btn btn-mini btn-success", "onclick" => 'selectData($(this).parent().parent().children(":nth-child(1)").text(),$(this).parent().parent().children(":nth-child(2)").text());', ) ), ) ), ), )); 

рддрддреНрд╡ рдЪрдпрди рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рднреА рдЧреНрд░рд┐рдб рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдорд╛рдирдХ CGridView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрдХ рддрд░рдХреАрдм рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, рдПрдХ рд╕рд╛рджреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡ рдЪрдпрди рдмрдЯрди рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рддрддреНрд╡ рдХреА рдЖрдИрдбреА рдФрд░ рд╢реАрд░реНрд╖рдХ рдХреЛ рдлрд╛рдбрд╝ рд░рд╣рд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЧреНрд░рд┐рдб рд╡реНрдпреВ рд╡рд┐рдЬреЗрдЯ рдПрдХрд▓ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрдИрдбреА рдФрд░ рд╢реАрд░реНрд╖рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓ _form.php рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрдпрди рдбреЗрдЯрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрдиреВ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдФрд░ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореЙрдбрд▓ рдФрд░ рд▓рд┐рдЦрдиреЗ рдпрд╛ рдЙрддреНрдкрдиреНрди, Gii рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП ActiveRecord рдореЙрдбрд▓ред

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


All Articles