рдкрд░рд┐рдЪрдп
рд╣рд░ рдХреЛрдИ рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╡рд╛рдИрдЖрдИрдЖрдИ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ORM рдШрдЯрдХ ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдХрдИ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдпрд╣ рдХрдВрдкрдиреА рдХреЗ рд╡рд┐рддрд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдПрдлрд╝рдЯреАрдкреА рдФрд░ рд░реЗрдбрд┐рдпрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдерд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдХ рдХреНрд╖рдг рдХреЗ рд╡рд┐рдЪрд╛рд░ рдиреЗ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЙрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд
REST рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рджреЛ рдХрд╛рд░рдг рдереЗ, рдкрд╣рд▓рд╛ рдФрд░ рдореБрдЦреНрдп - рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ REST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рднрд╛рдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рджреВрд╕рд░рд╛ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдкрд░ рдЦреБрд▓рд╛ рд╣реИ, рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рднрд╛рдЧ рд▓реЗрдЦ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдирд┐рдХрд▓рд╛ред
рдиреАрдЪреЗ рдЙрддрд░ рд░рд╣рд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдП рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рдЧреБрдЪреНрдЫрд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдирд╣реАрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрд░реЗ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрди рдкреГрд╖реНрда рдкрд░ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреГрд╖реНрда рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЙрд╕ HTTP рдкрд░ рдЖрдЧреЗ рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рд╕реАрдзреЗ рд╕реНрдерд┐рдд рд╣реИрдВред рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ REST API рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд░рд╛рдо рд╕реЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереА рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЕрдВрджрд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдмрдЪреНрдЪреЗ рдХреЗ рдХреМрддреБрдХ рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред
рдХреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдЦреБрдж рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ
рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХреА рдореЗрдВ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд
рд╣реИ ред рдпрд╣ рдирд┐рд░реНрдгрдп рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╡рд╛рдИ-
рд░реАрд╕реНрдЯ -рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд╣рдЪрд╛рди рдХрд╛ рдореБрдЦреНрдп рдЬрд╛рджреВ
urlManager рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ
рд╕рдВрд░рдХреНрд╖рд┐рдд / config / main.php рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ :
'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' => false, 'rules' => array(
рдпрд╣ рдпреЗ рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рдлреЙрд░реНрдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
POST api.domain.ru/api/users
рдореЗрдВ
POST api.domain.ru/api/create?model=users
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛ рд╕реБрдЦрдж рдирд╣реАрдВ рдерд╛ рд╡рд╣ рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрдм рдПрдХреНрд╢рди рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рд╕реНрд╡рд┐рдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛, рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреЙрд░реНрдо рдХреЗ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
if (isset($_GET['model'])) $_model = CActiveRecord::model(ucfirst($_GET['model']));
рдЕрдЧрд▓рд╛, рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдкреВрд░реА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рдХрд▓рд╛ (рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬреЛ рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдзреНрдпрд╛рдп рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реНрдг рд╕реНрд░реЛрдд Yii рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ):
<?php class ApiController extends Controller { Const APPLICATION_ID = 'ASCCPE'; private $format = 'json'; public function filters() { return array(); } public function actionList() { if (isset($_GET['model'])) $_model = CActiveRecord::model(ucfirst($_GET['model'])); if (isset($_model)) { $_data = $_model->summary($_GET)->findAll(); if (empty($_data)) $this->_sendResponse(200, sprintf('No items were found for model <b>%s</b>', $_GET['model'])); else { $_rows = array(); foreach ($_data as $_d) $_rows[] = $_d->attributes; $this->_sendResponse(200, CJSON::encode($_rows)); } } else { $this->_sendResponse(501, sprintf( 'Error: Mode <b>list</b> is not implemented for model <b>%s</b>', $_GET['model'])); Yii::app()->end(); } } public function actionView() { if (isset($_GET['model'])) $_model = CActiveRecord::model(ucfirst($_GET['model'])); if (isset($_model)) { $_data = $_model->findByPk($_GET['id']); if (empty($_data)) $this->_sendResponse(200, sprintf('No items were found for model <b>%s</b>', $_GET['model'])); else $this->_sendResponse(200, CJSON::encode($_data)); } else { $this->_sendResponse(501, sprintf( 'Error: Mode <b>list</b> is not implemented for model <b>%s</b>', $_GET['model'])); Yii::app()->end(); } } public function actionCreate() { $post = Yii::app()->request->rawBody; if (isset($_GET['model'])) { $_modelName = ucfirst($_GET['model']); $_model = new $_modelName; } if (isset($_model)) { if (!empty($post)) { $_data = CJSON::decode($post, true); foreach($_data as $var => $value) $_model->$var = $value; if($_model->save()) $this->_sendResponse(200, CJSON::encode($_model)); else {
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЙрдкрдпреБрдХреНрдд рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
ActiveRecord рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рд░рдгреА рдЪрд░
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред рдпрджрд┐ рдЪрдпрди рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдпрд╛ рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдбреНрд╕ рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ
getAttributes рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ,
рдореЙрдбрд▓ рдореЗрдВ рд╣реИ ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ,
getAttributes рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
public function getAttributes($names = true) { $_attrs = parent::getAttributes($names); $_attrs['quota_limit'] = $this->limit['bytes_in_avail']; $_attrs['quota_used'] = $this->tally['bytes_in_used']; return $_attrs; }
рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдЬрд┐рдВрдЧ рдФрд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдирд╛рдорд╛рдВрдХрд┐рдд рдЧреБрдВрдЬрд╛рдЗрд╢
рд╕рд╛рд░рд╛рдВрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред "
public function summary($_getvars = null) { $_criteria = new CDbCriteria(); if (isset($_getvars['count'])) { $_criteria->limit = $_getvars['count']; if (isset($_getvars['page'])) $_criteria->offset = ($_getvars['page']) * $_getvars['count']; } if (isset($_getvars['sort'])) $_criteria->order = str_replace('.', ' ', $_getvars['sort']); $this->getDbCriteria()->mergeWith($_criteria); return $this; }
рдореЙрдбрд▓ рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда:
<?php class Ftpuser extends CActiveRecord {
рдкреВрд░реНрдг рдкреНрд░рд╕рдиреНрдирддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪреАрдЬ рдЧрд╛рдпрдм рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝реЙрд░реНрдо
/ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / 156 / рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдиреЗрд╕реНрдЯреЗрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ, рд╕реАрдПрдордПрд╕ рдирд╣реАрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред
рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЗ рд╕рд╛рде, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ
рдпрд╣рд╛рдВ Yii рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд▓рд┐рдВрдХ рдХрдм рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧрд╛, рдпрджрд┐ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рднрд░реЛрд╕реЗрдордВрдж рд░реВрдк рд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП - рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдВред
рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ
рдореЗрд░реА рдмрд╛рдЗрдХ рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯреА рд╕реА рдЦреЛрдЬ рдХреА рдЧрдИ рдФрд░ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ
ActiveResource рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдорд┐рд▓рд╛ред рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░реЗрд░рдгрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд░реВрдмреА рдореЗрдВ
ActiveResource рдХрд╛ рд░реЗрд▓ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ред рдкреГрд╖реНрда рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣реА рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣
ActiveRecord рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рдШрдЯрдХ рд╣реИ, рд▓реЗрдХрд┐рди Yii
GridView рдпрд╛
ListView рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП,
ActiveDataProvider рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдШрдЯрдХ
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдиреЗ рдореБрдЭреЗ рдПрдХ
рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ
EActiveResourceDataProvider рдФрд░
EActiveResourceQueryCriteria рд╢рд╛рдорд┐рд▓ рд╣реИрдВ , рд╕рд╛рде рд╣реА рд╕рд╛рде
рдлреЛрд░рдо рдереНрд░реЗрдб рдореЗрдВ рдЙрдирдХреА рдЪрд░реНрдЪрд╛ рдЬрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рднрд╛рдЧ рд▓рд┐рдпрд╛ред
ESort рдФрд░
EActiveResourceDataProvider рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг
рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд
рдХрд┐рдП рдЧрдП рдереЗ ред
рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рднреА рд▓рд╛рд▓рд┐рддреНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдлрд╝рд╛рдЗрд▓ рдкреВрд░реА рдирд╣реАрдВ рдереАред рд╕рдорд╕реНрдпрд╛ рдЧреНрд░рд┐рдб рдореЗрдВ рдЦрд░рд╛рдмреА рдХреЗ рдШрдЯрдХ рдерд╛ред рд╕реНрд░реЛрдд рдХреЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдЕрдзреНрдпрдпрди рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдСрдлрд╕реЗрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдСрдлрд╕реЗрдЯ рдереА, рдЬрд┐рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдЧреНрд░рд┐рдб рд╡реНрдпреВ рдореЗрдВ
рдкреЗрдЬреЗрд╢рди рдкреЗрдЬ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рддрд┐ рдкреГрд╖реНрда 10 рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рддреЗ рд╕рдордп, рдЬрдм рдкреГрд╖реНрда 2 рдкрд░ рдЬрд╛ рд░рд╣реЗ рдереЗ, рддреЛ рд╣рдореЗрдВ рдкреГрд╖реНрда 20 рдкрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдХреЛрдб рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рд╕рдВрд░рдХреНрд╖рд┐рдд / рдПрдХреНрд╕рдЯреЗрдВрд╢рди / EActiveResource / EActiveResourceQueryCriteria.php ,
рдмрд┐рд▓реНрдбрд╡рд┐рдХреИрд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ
, рдпрд╣ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
if($this->offset>0)
рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ
EActiveResourcePagination рд╕реЗ
getOffset рд╡рд┐рдзрд┐ рдХреЗ рдЕрдзрд┐рднрд╛рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЗрд╕рд▓рд┐рдП, REST рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ, рдмрд╛рдХреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ GII рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдореИрдВ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рджреВрд░рд╕реНрде REST API рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рдо рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдиреЗ рдФрд░
ActiveResource рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд
getConnection рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рдВрд╢рдЬ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ (рдпрд╣ рдПрдлрд╝рдЯреАрдкреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдХреЛ FTPServers рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
abstract class EActiveResourceSelect extends EActiveResource { public function getConnection() { $_server_id = Yii::app()->session['ftp_server_id']; $_db_params = array(); if (isset($_server_id)) { $_srv = FTPServers::model()->findByPk($_server_id); if (isset($_srv)) $_db_params = $_srv->attributes; else Yii::log('info', "No FTP server with ID: $_server_id were found"); } else { $_srv = FTPServers::model()->find(); if (isset($_srv)) { $_db_params = $_srv->attributes; Yii::app()->session['ftp_server_id'] = $_srv->id; } else Yii::log("No FTP servers were found", CLogger::LEVEL_INFO); } self::$_connection = new EActiveResourceConnection(); self::$_connection->init(); self::$_connection->site = $_db_params['site']; self::$_connection->acceptType = $_db_params['acceptType']; self::$_connection->contentType = $_db_params['contentType']; if (isset($_db_params['username']) && isset($_db_params['password'])) { self::$_connection->auth = array( 'type' => 'basic', 'username' => $_db_params['username'], 'password' => $_db_params['password'], ); } return self::$_connection; } }
рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп
ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдмрд╣реБрдд рднрд┐рдиреНрди рдирд╣реАрдВ рдерд╛, рдЬреЛ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ,
ActiveResource рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред