laker-ls / yii2-pencil
模块创建和查看交互式文本和图像。
Requires
README
yii2-pencil
注意:要运行此程序需要 developeruz/yii2-db-rbac 和现有的角色。
当用户作为管理员登录时,通过模态窗口编辑显示的文本。非管理员只能看到普通文本,而管理员可以通过点击文本来打开一个包含单行文本区域(textarea)的模态窗口,在此字段中的换行符会被转换为 <br />
,所有文本样式都应该通过 CSS 设置。
你可以设置在哪个标签中输出文本,并传递给它类和其他属性。管理员的文本视图不同,并且可以添加仅对管理员可见的属性。
当用户作为管理员登录时,通过模态窗口编辑显示的图像。所有用户都可以看到图像,但管理员会额外看到一个编辑图像的按钮。
安装
推荐使用 composer 安装此扩展。请检查 composer.json 以了解此扩展的需求和依赖项。
要安装,请运行
$ php composer.phar require laker-ls/yii2-pencil "~2.2.5"
或者将以下行添加到 composer.json
的 require
部分
"laker-ls/yii2-pencil": "~2.2.5"
查看 变更日志 以获取关于版本的详细信息。
连接
在控制台中执行迁移
yii migrate --migrationPath=@lakerLS/pencil/migrations
在应用程序配置中连接模块,并使用 accessRoles
参数指定允许编辑的角色。使用 imagePath
参数传递存储图像的文件夹路径(原始和缩略图)
'modules' => [ 'pencil' => [ 'class' => '\lakerLS\pencil\Module', 'params' => [ 'accessRoles' => ['admin'], 'imagePath' => [ 'full' => 'upload/image-gallery/full', 'mini' => 'upload/image-gallery/mini', ], ], ], ]
在调用“铅笔”动作的控制器中,必须传递当前类别的 id
。以下代码仅作为示例,实际传递的参数可能会有所不同,但 categoryId
属性的名称不应更改。
public $categoryId; public function actionIndex($category) { // Где $category объект текущей категории. $this->categoryId = $category->id; // Если страница статическая, то можем задать `id` явно, но данный способ не является хорошей практикой. $this->categoryId = 1; return $this->render('view'); }
扩展已准备就绪。
使用文本小部件
use lakerLS\pencil\widgets\PencilText; <?= PencilText::widget(['id' => 'example-id']) ?>
在布局中使用小部件
use lakerLS\pencil\widgets\PencilText; <?= PencilText::widget(['id' => 'example-id', 'nonUnique' => 'this-name-layout']) ?>
使用额外的参数
use lakerLS\pencil\widgets\Pencil; <?= PencilText::widget(['id' => 'example-id', 'tag' => 'h2', 'options' => ['class' => 'my-class']]) ?>
id
(字符串)- 必要参数,出于方便,请使用字符串指定 id。在单页面上需要唯一的名称。在其他页面上重复使用名称不会引起冲突。
tag
(字符串)- 包含内容标签的名称。
options
(数组)- 对所有用户可见的标签参数。
nonUnique
(字符串)- 可选参数。为了在多个页面上显示相同的文本,需要传递一个字符串,该字符串将用作 id
的替代品。
optionsAdmin
(数组)- 只有管理员可见的标签参数。使用类和样式设置文本样式,使其易于理解(可编辑)。默认为蓝色下划线。
textIsEmpty
(字符串)- 当内容为空或不存在时,管理员看到的文本,以便编辑,因为文本是唯一可以调用管理员模态窗口的方式。
使用图像小部件
将小部件放置在没有任何其他内容的标签内,因为当更新图像时,所有标签内容都将被替换。
在 begin
和 end
之间传递每个单独图像的模板。在这个模板中,必须有一个空的 <img>
标签,该标签将被实际图像替换。
要在布局中使用小部件,必须通过 layout
参数传递布局的名称。
将 true
或 false
参数传递给 small
,可以选择编辑按钮的样式(仅管理员可见)。
重要:使用
true
作为small
参数的值时,必须确保包含图像的父元素具有样式position: relative
。
<?php use lakerLS\pencil\widgets\PencilImage; ?> <div class="example-container" style="position: relative"> <?php $pencilImg = PencilImage::begin([ 'group' => 'our-characteristics-img-main', 'small' => true, 'thumbnail' => [ 'width' => 634, 'height' => 466, 'quality' => 50, ] ]); ?> <a href="<?= $pencilImg->urlFull() ?>"> <img src="<?= $pencilImg->urlMini() ?>" alt="<?= $pencilImg->alt() ?>"> </a> <?php PencilImage::end() ?> </div>
group
(字符串)- 必须传递的参数,用于创建图像专辑。可以使用西里尔字母。
thumbnail
(数组)- 必须传递的参数,其中包含缩略图的宽度和高度。可选参数是 quality
。缩略图的质量设置为1到100之间的值,默认为50。
small
(布尔值)- 可选参数。默认为 false
。
如果值为 false
,则显示大按钮用于编辑。适用于创建/编辑专辑。
如果值为 true
,按钮具有小尺寸和绝对位置。不影响布局,显示在右下角。
nonUnique
(字符串)- 可选参数。为了在多个页面上显示相同的图像,需要传递一个字符串,该字符串将用作 id
的替代。
删除未使用的图像
通过数据库删除记录时,图像将保留。为此,实现了删除未使用图像的功能。在其他情况下,不需要使用此控制器。
在 config/console.php
中,需要以以下方式连接该模块
'modules'=>[ 'pencil' => [ 'class' => '\lakerLS\pencil\Module', 'params' => [ 'imagePath' => [ 'full' => 'upload/image-gallery/full', // Ваш путь к оригинальному изображению. 'mini' => 'upload/image-gallery/mini', // Ваш путь к миниатюре изображения. ], ], 'controllerNamespace' => 'lakerLS\pencil\commands', ], ],
在控制台中,从项目根目录执行以下命令
yii pencil/cron/delete-image
许可证
yii2-pencil 根据 BSD-3-Clause 许可证发布。可以在 LICENSE.md
文件中查阅。