рджреВрд╕рд░реЗ рджрд┐рди, Yii PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ 1.1.7 рд░рд┐рд▓реАрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ 90 рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрдЧ, рд╕реБрдзрд╛рд░ рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рдереАрдВред
рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА
рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣рдо рдиреАрдЪреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЕрдм
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 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:
рд╕рдВрд╕реНрдХрд░рдг 1.1.4 рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рднрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
class UpdateAction extends CAction { public function run($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, ), ), ), ));
рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ
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 () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред