lowbase/yii2-document

Yii2 文档模块

安装次数: 2,348

依赖项: 2

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 1

开放问题: 0

类型:yii2-extension

1.0.0 2016-05-08 17:55 UTC

This package is not auto-updated.

Last update: 2024-09-20 19:14:41 UTC


README

Yii2-document - lowBase套件中的独立模块,包含管理面板和全面的功能,用于组织文章、新闻和其他内容实体。

  • 文档树状层次结构(分类、部分本身就是文档)
  • WYSIWYG 编辑器,支持文件上传到服务器
  • 文档附加字段和多字段文档
  • 可定制的显示模板
  • 访问统计
  • 文档点赞
  • 便捷的 Tree-视图,支持拖放操作
  • 扩展的文档和附加字段搜索

安装

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

"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 组件(以树状视图显示文档)中指定了绝对路径。

创建数据库表

使用命令运行迁移

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

文档处理

文档附加字段的值存储在数组 $document->fields

获取文档本身后,数组不填充

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

要填充文档的附加字段,请使用方法 fillFields()

$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 - идентификатор нового значения
     */

保存文档后

$document->save();

附加字段的值将保存到相应的表中。

也可以直接通过查询相应的表(根据字段类型)从数据库中获取附加字段的值

// Получение значений дополнительного поля $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()]) ?>