lowbase / yii2-document
Yii2 文档模块
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()]) ?>