рд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рд╣реЛрддрд╛ рд╣реИред рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдореВрдирд╛, рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛ред рд╣рд░ рдмрд╛рд░, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЙрдмрд╛рдК рд╣реИред рдЬрдм рдЬрд┐рддрдиреА рдмрд╛рд░ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреА рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдпрд╣ рдЖрд▓реЗрдЦ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЧрд╛ рдХрд┐ рд╡рд╛рдИрдЖрдИ 2 рдврд╛рдВрдЪреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдПрдХ рд╕рдорд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╣реИ : рдПрдХ рдмрд╛рд░ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдордирдорд╛рдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рддреЛ рдмреБрдирд┐рдпрд╛рджреА рд╕рд╛рдЗрдЯ
рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░
рдмреЗрд╕рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдФрд░ рдХреИрдкреНрдЪрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
рд╕рд╛рдЗрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛<?php namespace app\controllers; use Yii; use yii\web\Controller; class SiteController extends Controller { public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, ], ]; } }
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
- ListAction - рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХрд╛рд░реНрд░рд╡рд╛рдИ , рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рдЦреЛрдЬ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
- DataProvider - рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдПрдХ рдкрд░рдд, рдкреЗрдЬ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЫрдБрдЯрд╛рдИред
- рдЦреЛрдЬ рдореЙрдбрд▓ - рдПрдХ рдЦреЛрдЬ рдореЙрдбрд▓ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рдВрдЫрд┐рдд рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдкреНрд░реЛрдЗрдб рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдирд╛рддрд╛ рд╣реИред
рдЕрдВрддрд┐рдо рджреЛ рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдорд╛рдирдХ
рдЬреАрдЖрдИрдЖрдИ рдЙрддреНрдкрдиреНрди
рд╕реАрдЖрд░рдпреВрдбреА рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдирдореВрдиреЗ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрдорд╛рдиреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдПрдЖрд░ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрд╡рдпрдВ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ yii1 рдореЗрдВ рдерд╛)ред рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдорд┐рд▓рддрд╛ рд╣реИред
ListAction рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣ рд░рди рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдЧ yii \ base \ Action рд╕реЗ рд╡рд╛рд░рд┐рд╕ рд╣реЛрддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╕рдордп, рдЙрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ, рд╣рдо рдЖрдзрд╛рд░ рд╕рд╛рд░ рд╡рд░реНрдЧ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджрд┐рдП рдЧрдП рдЦреЛрдЬ рдореЙрдбрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рджреГрд╢реНрдп, рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛, рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛, рдЖрджрд┐ред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди <?php namespace app\modules\shop\actions; use Yii; use yii\base; use yii\web\Response; use app\modules\shop\components\FilterModelBase; use yii\widgets\LinkPager; class ListAction extends base\Action { protected $_filterModel; protected $_validationFailedCallback; public $directPopulating = true; public $paginationAsHTML = false; public $requestType = 'get'; public $view = '@app/modules/shop/views/list/index'; public function run() { if (!$this->_filterModel) { throw new base\ErrorException(' '); } $request = Yii::$app->request; if ($request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; }
рдпрджрд┐ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдп рднреА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреГрд╢реНрдп <?php use yii\widgets\ActiveForm; use yii\helpers\Html;
рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЦреЛрдЬ рдореЙрдбрд▓ рдХреА
рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдлрд╝реЙрд░реНрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо GridView рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдпрджрд┐ рд╡реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ рдпрд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рд╣реИрдВред
рдореВрд▓ рдЦреЛрдЬ рдореЙрдбрд▓
рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд▓рд┐рд╕реНрдЯрдПрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗ рдЧрдП рдореЙрдбрд▓ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗред рдореЙрдбрд▓ рдФрд░ ListAction рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдирдореВрдирд╛ рддрд░реНрдХ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдореЙрдбрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди <?php namespace app\modules\shop\components; use yii\base\Model; use yii\data\DataProviderInterface; abstract class FilterModelBase extends Model { protected $_dataProvider; abstract public function search(); public function buildModels() { return $this->_dataProvider->getModels(); } public function getDataProvider() { return $this->_dataProvider; } }
рдпрд╣ рдЦреЛрдЬ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЗрд╕ рдореЙрдбрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ListAction рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЦреЛрдЬ рдореЙрдбрд▓ рдореЗрдВ, рдбреЗрдЯрд╛ рдирдореВрдирд╛рдХрд░рдг рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЦреЛрдЬ рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рд╕рддреНрдпрд╛рдкрди, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рддрд░реНрдХ, рдЖрджрд┐ред
рдбреЗрдЯрд╛ рдХрдВрдкреЛрдЬрд┐рд╢рди рд▓реЙрдЬрд┐рдХ рдмрд┐рд▓реНрдбрдореЙрдбрд▓ рдореЗрдердб рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛрддрд╛ рд╣реИред
рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рдж рдЦреЛрдЬ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
рдЦреЛрдЬ рдореЙрдбрд▓ <?php namespace app\modules\shop\models\search; use app\modules\shop; use yii\data\ActiveDataProvider; use yii\data\Pagination; class ProductSearch extends shop\components\FilterModelBase { public $price; public $page_size = 20; public function rules() { return [
рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП ListAction рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдФрд░ рдЙрддреНрдкрд╛рдж рдЦреЛрдЬ рдореЙрдбрд▓ рдХреЛ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ <?php namespace app\modules\shop\controllers; use yii\web\Controller; use app\modules\shop\actions\ListAction; use app\modules\shop\models\search\ProductSearch; class ProductController extends Controller { public function actions() { return [ 'index' => [ 'class' => ListAction::className(), 'filterModel' => new ProductSearch(), 'directPopulating' => false, ] ]; } }
рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░, рд╣рдореЗрдВ JSON рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ:
рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо { "list": [ { "id": "7", "price": "50", "title": "product title #7", "description": "product description #7", "create_time": "0", "update_time": "0", "categories": [ { "id": "1", "title": "category title #1", "description": "category description #1", "create_time": "0", "update_time": "0" } ] } ], "pagination": { "pageVar": "page", "forcePageVar": true, "route": null, "params": null, "urlManager": null, "validatePage": true, "pageSize": 20, "totalCount": 1 } }
рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╕рд░рдгреА рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛ред рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдиреБрд░реЛрдз (рдЕрдЬрд╛рдХреНрд╕ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦреЗрдВрдЧреЗ:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛
рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдЗрд╕реЗ Yii2 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
php yii migrate --migrationPath=modules/shop/migrations
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЪрдпрди рдФрд░ рдПрдХ рдЕрдиреНрдп рджреЛрд╣рд░рд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдкреАрдЖрдИ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░, JSON рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред