Yii 1.1.7

рджреВрд╕рд░реЗ рджрд┐рди, Yii PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ 1.1.7 рд░рд┐рд▓реАрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ 90 рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрдЧ, рд╕реБрдзрд╛рд░ рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рдереАрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣рдо рдиреАрдЪреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред



рд░реАрд╕реНрдЯ-рд╕реНрдЯрд╛рдЗрд▓ URL рд╕рдкреЛрд░реНрдЯ



рдЕрдм CUrlManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд┐рдзрд┐ (GET, POST, PUT, рдЖрджрд┐) URL рдирд┐рдпрдо рдХреА verb рдЧреБрдг рдореЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, post/123 рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо GET рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
post/view рдПрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рдФрд░ post/update рдПрдХреНрд╢рди рдХреЗ рд╕рд╛рде post/123 рдкрд░ PUT рдпрд╛ POST ред

 return array( 'components'=>array( 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( array('<controller>/view', 'pattern'=>'<controller:\w>/<id:\d+>', 'verb'=>'GET'), array('<controller>/update', 'pattern'=>'<controller:\w>/<id:\d+>', 'verb'=>'PUT, POST'), ), ), ), ); 


рдЖрдк CHUTpRequest :: getPut () рдФрд░ CHttpRequest :: getDelete () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PUT рдФрд░ DELETE рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ



рдЬрдм рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реАрдзреЗ рд╡рд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреБрд░реЛрдз рдХреИрд╢рд┐рдВрдЧ DAO рдФрд░ AR рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:

 //    $sql  1000      tbl_post $sql = 'SELECT * FROM tbl_post LIMIT 20'; $dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post'); $rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll(); //  ,   AR $posts = Post::model()->cache(1000, $dependency)->findAll(); // query caching with relational AR $posts = Post::model()->cache(1000, $dependency)->with('author')->findAll(); 


рдПрдХреНрд╢рди рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ



рд╕рдВрд╕реНрдХрд░рдг 1.1.4 рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рднрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 class UpdateAction extends CAction { public function run($id) { // $id     $_GET['id'] } } 


рдкрд╛рд░рджрд░реНрд╢реА рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрдпрд╛рдкрди



CActiveForm рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рдЬреЗрдЯ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдлреЙрд░реНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрд╕рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ, рдпрд╣ рдХреЗрд╡рд▓ AJAX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рдерд╛ред
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдорд╛рдиреНрдпрддрд╛
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдореЙрдбрд▓ рдирд┐рдпрдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк CActiveForm :: enableClientValidation рд╕реЗрдЯ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рддреНрдпрд╛рдкрди рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
true рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 <?php $form=$this->beginWidget('CActiveForm', array( 'enableClientValidation'=>true, )); ?> <div class="row"> <?php echo $form->labelEx($model,'username'); ?> <?php echo $form->textField($model,'username'); ?> <?php echo $form->error($model,'username'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'password'); ?> <?php echo $form->passwordField($model,'password'); ?> <?php echo $form->error($model,'password'); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton('Login'); ?> </div> <?php $this->endWidget(); ?> 


рдкрд░рд┐рдзреАрдп рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛



рдЕрдм рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд░рд┐рд▓реЗрд╢рдирд▓ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдпрджрд┐ Post рдореЙрдбрд▓ рдореЗрдВ рдПрдХ rated рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдиреНрдпреВрдирддрдо рд░рд┐рдХреЙрд░реНрдб рд░реЗрдЯрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ,
рдЖрдк рдЗрд╕реЗ User рдореЙрдбрд▓ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $users=User::model()->findAll(array( 'with'=>array( 'posts'=>array( 'scopes'=>array( 'rated'=>5, ), ), ), )); 


HAS_MANY рдФрд░ HAS_ONE рдХреЗ рд╕рд╛рде 'рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ through рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ,
MANY_MANY рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА, рдЬрд┐рд╕рд╕реЗ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ
рдмреАрдЪ рдХрд╛ рдкреБрд▓ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдореВрд╣ рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЙрджрд╛рд╣рд░рдг рдореИрдиреБрдЕрд▓ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



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

рд╕реАрдбреАрдмреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп :: рдЕрдк () рдФрд░ рд╕реАрдбреАрдмреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди :: рдбрд╛рдЙрди () ,
рдЖрдк рд╕реАрдбреАрдмреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди :: рд╕реЗрдлрдЕрдк () рдФрд░ рд╕реАрдбреАрдмреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди :: рд╕реЗрдлрдбрд╛рдЙрди () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЛрдб рдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдПрдЧрд╛:

 class m101129_185401_create_news_table extends CDbMigration { public function safeUp() { $this->createTable('tbl_news', array( 'id' => 'pk', 'title' => 'string NOT NULL', 'content' => 'text', )); } public function safeDown() { $this->dropTable('tbl_news'); } } 


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рднреА DBMS рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдЕрдкрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ



CClientScript рдЕрдм рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдХреЗрдЬ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ, рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрддрд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред

рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЪрд┐рддреНрд░ рдФрд░ рдЕрдиреНрдп рдХреЛрдИ рднреА рдлрд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдкреИрдХреЗрдЬ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рд╣реИ
рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рдкреИрдХреЗрдЬ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред

рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдкрд╣рд▓реЗ рдореЗрдВ
CClientScript :: рд╕рдВрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░
рд╡реЗ CClientScript :: registerPackage () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред

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


All Articles