2017 © Pedro PelΓ‘ez
 

yii2-extension yii2-document

Yii2 document module

image

lowbase/yii2-document

Yii2 document module

  • Monday, May 9, 2016
  • by lowbase
  • Repository
  • 2 Watchers
  • 4 Stars
  • 1,326 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 2 Forks
  • 1 Open issues
  • 2 Versions
  • 22 % Grown

The README.md

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Yii2-document - нСзависимый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° lowBase с панСлью администрирования ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ возмоТностСй для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ статСй, новостСй ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… сущностСй ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ содСрТания., (*1)

  • ДрСвовидная иСрархия Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ самими Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ)
  • WYSIWYG Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСрвСр
  • Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠΎΠ»Ρ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • НастраиваСмыС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ отобраТСния
  • Π’Π΅Π΄Π΅Π½ΠΈΠ΅ статистики посСщСний
  • Π›Π°ΠΉΠΊΠΈ Π΄ΠΎΠΊΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ Tree-Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Drag n Drop
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ поиск ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΈ ΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ полям

Установка

php composer.phar require --prefer-dist lowbase/yii2-document "*"

ΠΈΠ»ΠΈ, (*2)

"lowbase/yii2-document": "*"

Настройка ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

//-------------------------------------------------
// ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³Π° для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…
// дСйствий с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
//-------------------------------------------------

'urlManager' => [
   'enablePrettyUrl' => true,
   'showScriptName' => false,
   'rules' => [
       //ВзаимодСйствия с шаблонами Π² ΠΏΠ°Π½Π΅Π»ΠΈ администрирования
       'admin/template/<action:(index|create|update|delete|view|multidelete)>' => 'lowbase-document/template/<action>',
       //ВзаимодСйствия с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ администрирования
       //ΠŸΡ€Π°Π²ΠΈΠ»Π° для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ, Ρ‚.ΠΊ. Π½Π° Π½ΠΈΡ… завязан js скрипт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
       'admin/document/<action:(index|create|update|delete|view|multidelete|multiactive|multiblock|move|change|field)>' => 'lowbase-document/document/<action>',
        //ВзаимодСйствия с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌΡ‡
       'elfinder/<action(connect|manager)>' => 'lowbase-document/path/<action>',
       // Π›Π°ΠΉΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
       'like/<id:\d+>' => 'lowbase-document/document/like',
        //ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
       '<alias>' => 'lowbase-document/document/show',
       //ВзаимодСйствия с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ полями шаблонов
       'admin/field/<action:(create|update|delete|multidelete)>' => 'lowbase-document/field/<action>',
   ],
],

//-----------------------
// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ сами ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
//-----------------------

'modules' => [
   'gridview' =>  [
       'class' => '\kartik\grid\Module'
   ],
   'lowbase-document' => [
       'class' => '\lowbase\document\Module',
   ],
],

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!!!

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля lowbase-document Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. А Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€ΠΎΡƒΡ‚Ρ‹ Π½Π° созданиС, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, просмотр ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ JStree (Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°) ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ., (*3)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π‘Π”

ЗапускаСм ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:, (*4)

php yii migrate/up --migrationPath=@vendor/lowbase/yii2-document/migrations

Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ

ЗначСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° хранятся Π² массивС $document->fields, (*5)

ПослС получСния самого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° массив Π½Π΅ заполняСтся:, (*6)

$document = app\models\Document::findOne($id);
print_r($document->fields);     //Array() - массив пуст

Для заполнСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ fillFields(), (*7)

$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 - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния
     */

ПослС сохранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, (*8)

$document->save();

значСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹., (*9)

МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ запросами ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ (Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° поля) Π‘Π” Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, (*10)

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поля $field_id строкового Ρ‚ΠΈΠΏΠ°
$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();

Запуск Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²

use lowbase\document\components\TreeWidget;

// Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ отобраТСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π²Π° (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ jstree) 
= TreeWidget::widget(['data' => Document::find()->orderBy(['position' => SORT_ASC])->all()]) ?>

The Versions