lowBase - Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Yii2 CMS Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
lowBase - Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ CMS, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ Π² ΡΠ΅Π±Ρ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° ΠΈ Yii2 ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΏΠΎΡ
ΠΎΠΆΠ° Π½Π° CMS ModX, (*1)
Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ:, (*2)
ΠΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, (*3)
ΠΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², (*4)
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π² CMS Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Ρ., (*5)
ΠΠ΅ΠΌΠΎ ΠΏΠ°Π½Π΅Π»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, (*6)
Π‘Π°ΠΉΡ-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ, (*7)
ΠΠΎΡΡΡΠΏ ΠΊ Π°Π΄ΠΌΠΈΠ½. ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ /admin
, (*8)
, (*9)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° lowBase
composer create-project lowbase/yii2-cms project-name dev-master
- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π² ΡΠ°ΠΉΠ»Π΅ config/db.php
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=ΠΈΠΌΡ_Π±Π°Π·Ρ_Π΄Π°Π½Π½ΡΡ
',
'username' => 'ΠΏΠΎΠ»ΡΠ·Π²Π°ΡΠ΅Π»Ρ',
'password' => 'ΠΏΠ°ΡΠΎΠ»Ρ',
'charset' => 'utf8',
],
- ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠ°Π½Π΄ΠΎΠΉ
php yii migrate
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ EAUTH-Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΡΠ°ΠΉΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡ
.
Π ΡΠ°ΠΉΠ»Π΅ config/web.php ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈ id ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
'authClientCollection' => [
'class' => 'yii\authclient\Collection',
'clients' => [
'vkontakte' => [
// https://vk.com/editapp?act=create
'class' => 'lowbase\user\components\oauth\VKontakte',
'clientId' => '?',
'clientSecret' => '?',
'scope' => 'email'
],
...
]
]
ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ° Π½Π° lowBase
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΉΡΠ° Π²Π΅Π΄Π΅ΡΡΡ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ "ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ". Π’.Π΅. ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ Frontend ΡΠ°ΡΡΠΈ, Π΄Π΅Π»Π°Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠΈΠ±ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΠ»ΠΈ Π²Π΅ΡΡΡΠ°Π»ΡΡΠΈΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π° ΠΊΠΎΠ½ΡΠ΅Π½Ρ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²., (*10)
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ - ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ½ΠΎΡΡΡ. ΠΡΠ½ΠΎΠ²Π° Π²ΡΠ΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ - ΡΡΠΎ:
* Π½ΠΎΠ²ΠΎΡΡΡ
* ΡΡΠ°ΡΡΡ
* ΠΎΡΠ·ΡΠ²
* ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ
* ΡΠΎΠ²Π°Ρ
* Π·Π°ΠΊΠ°Π· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°
* Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΊΠ° ΡΠΎΠ²Π°ΡΠ°
* ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΎΠΏΠ»Π°ΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°
* ΡΠ°ΠΌ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΠ»Π°ΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ
* ΡΠ΅Π³ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΈ
* ΡΠΎΡΠΎΠ³Π°Π»Π΅ΡΠ΅Ρ (ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° Π²ΡΠ²ΠΎΠ΄Π°)
* Π°Π»ΡΠ±ΠΎΠΌ ΡΠΎΡΠΎΠ³Π°Π»Π΅ΡΠ΅ΠΈ
* ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΡΠ°
* ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΡΠ°
* ..., (*11)
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ (ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ²). ΠΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΌΡΠ»ΡΡΠΈΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Ρ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
* Π¦Π΅Π½Π° ΡΠΎΠ²Π°ΡΠ° (ΡΠΈΡΠ»ΠΎ)
* Π‘ΡΠΌΠΌΠ° Π·Π°ΠΊΠ°Π·Π° (ΡΠΈΡΠ»ΠΎ)
* Π Π΅ΠΉΡΠΈΠ½Π³ ΠΎΡΠ·ΡΠ²Π° (ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ)
* ΠΠ°ΡΠΈΠ°Π½Ρ ΠΎΡΠ²Π΅ΡΠ° ΠΎΠΏΡΠΎΡΠ° (ΡΠΏΠΈΡΠΎΠΊ)
* Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ Π°Π»ΡΠ±ΠΎΠΌΠ° (ΡΠ°ΠΉΠ» Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°)
* Π’Π΅Π³ΠΈ (ΡΡΡΠΎΠΊΠ° (ΠΌΡΠ»ΡΡΠΈΠΏΠΎΠ»Π΅))
* ..., (*12)
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ CMS lowBase
Π Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² (ΠΌΠ΅Π½Ρ, ΡΠ°Π·Π΄Π΅Π»Ρ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΡΡΠ°ΡΡΠΈ, ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ) Π² Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ., (*13)
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΡΠ°: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ app/models/User
ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡapp/models/Document
ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ
app/contollers/UserController
ΠΈ app/controllers/DocumentController
, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΡΡΠΌΠΈ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅
ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ., (*14)
ΠΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π² Π²Π°ΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ \lowbase\document\Module
ΠΈ \lowbase\user\Module
. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π²ΡΠ·ΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΠΌΠΎΡΡΠΈΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ., (*15)
Π Π°Π±ΠΎΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ $document->fields
, (*16)
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ:, (*17)
$document = app\models\Document::findOne($id);
print_r($document->fields); //Array() - ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΡΡ
ΠΠ»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ fillFields()
, (*18)
$document = app\models\Document::findOne($id);
$document->fillFields();
print_r($document->fields); //Array([1] => ['name' => 'Π’Π΅Π³ΠΈ', 'type' => 4, 'param' => '', 'min' => 0, 'max' => 2, 'data' => [[1] => ['value' => 'Π’Π΅Π³_1', 'position' => ''], [2] => ...]], [2] => ...)
/**
* ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ
* ΠΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
*
* [$field_id] => [
* 'name' => 'ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ',
* 'type' => 'Π’ΠΈΠΏ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ',
* 'param' => 'ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ',
* 'min' => 'ΠΠΈΠ½ΠΈΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ',
* 'max' => 'ΠΠ°ΠΊΡΠΈΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ',
* 'data' => [ $data_id => [
* 'value' => 'ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ'
* 'position' => 'ΠΠΎΠ·ΠΈΡΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ'
* ],
* ...
* ]
* ],
* ...
*
* $field_id - ID Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΈΠ· ΠΠ, $data_id - ID Π·Π°ΠΏΠΈΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΈΠ· ΠΠ
* ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'data' ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ 'new_'.$i, Π³Π΄Π΅
* $i - ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
*/
ΠΠΎΡΠ»Π΅ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, (*19)
$document->save();
Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Π±ΡΠ΄ΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ., (*20)
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΠΎΠ»Ρ) ΠΠ Π½Π°ΠΏΡΡΠΌΡΡ, (*21)
$data_values = \lowbase\document\models\ValueString::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ $field_id ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
$data_values = \lowbase\document\models\ValueNumeric::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ $field_id ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
$data_values = \lowbase\document\models\ValueText::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ $field_id ΡΠΈΠΏΠ° Π’Π΅ΠΊΡΡ
$data_values = \lowbase\document\models\ValueDate::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ $field_id ΡΠΈΠΏΠ° ΠΠ°ΡΠ°