ckfinder / ckfinder-symfony3-bundle
Requires
- php: >=5.6.0
- league/flysystem: ^1.0.37
- league/flysystem-aws-s3-v3: ^1.0.13
- league/flysystem-cached-adapter: ^1.0.6
- monolog/monolog: ~1.4,>=1.4.1
- pimple/pimple: ~3.0
- symfony/form: ~3.0
- symfony/framework-bundle: ~3.0
Requires (Dev)
- phpunit/phpunit: ~5.7
This package is not auto-updated.
Last update: 2022-02-01 13:01:29 UTC
README
此包已被弃用。请使用 ckfinder/ckfinder-symfony-bundle 替代。
此存储库包含 CKFinder 3 for Symfony 的包。如果您在寻找 Symfony 2 的包,请参考 这里。
安装
-
添加 Composer 依赖并安装包。
composer require ckfinder/ckfinder-symfony3-bundle
-
在
AppKernel.php
中启用包。// app/AppKernel.php public function registerBundles() { $bundles = [ // ... new CKSource\Bundle\CKFinderBundle\CKSourceCKFinderBundle(), ]; }
-
运行命令以下载 CKFinder 发行包。
安装包后,您需要下载 CKFinder 发行包。由于许可证条款不同,它未包含在包中。要安装它,请运行以下 Symfony 命令
php bin/console ckfinder:download
它将下载代码并将其放置在包的
Resource/public
目录中。之后,您还可以安装资源,这样web
目录将更新为 CKFinder 代码。php bin/console assets:install web
-
在
app/config/routing.yml
中启用包路由。# app/config/routing.yml ckfinder_connector: resource: "@CKSourceCKFinderBundle/Resources/config/routing.yml" prefix: /
-
为 CKFinder 文件创建一个目录,并允许对其进行写入访问。默认情况下,CKFinder 期望它在
web/userfiles
中(此可以在配置中更改)。mkdir -m 777 web/userfiles
注意:由于通常将权限设置为 0777 是不安全的,建议将目录的所有权更改为与 Apache 相同的用户,并添加组写入权限。如有疑问,请联系系统管理员。
此时,您应该能在导航到 /ckfinder/connector?command=Init
路由后看到连接器 JSON 响应。CKFinder 的身份验证尚未配置,因此您将看到一个错误响应,表示 CKFinder 未启用。
配置身份验证
CKFinder 连接器身份验证由 ckfinder.connector.auth
服务管理,该服务默认在 CKSourceCKFinderBundle\Authentication\Authentication
类中定义。它包含一个返回布尔值的 authenticate
方法,以决定用户是否应该有权访问 CKFinder。如您所见,默认服务实现是不完整的,并在 authenticate
方法内部简单地返回 false
,但您可以将它用作起始占位符代码。
要为 CKFinder 连接器配置身份验证,您需要创建一个实现 CKSource\Bundle\CKFinderBundle\Authentication\AuthenticationInterface
的类,并将 CKFinder 连接器指向它。
一个基本的实现,从 authenticate
方法返回 true
(显然是不安全的)可能如下所示
// src/AppBundle/CustomCKFinderAuth/CustomCKFinderAuth.php namespace AppBundle\CustomCKFinderAuth; use CKSource\Bundle\CKFinderBundle\Authentication\Authentication as AuthenticationBase; class CustomCKFinderAuth extends AuthenticationBase { public function authenticate() { return true; } }
您可能已经注意到 AuthenticationInterface
扩展了 ContainerAwareInterface
,因此您可以从身份验证类的作用域访问服务容器。
当您自定义的身份验证准备就绪时,您需要通知CKFinder连接器开始使用它。为此,请将以下选项添加到您的配置中:
# app/config/config.yml ckfinder: connector: authenticationClass: AppBundle\CustomCKFinderAuth\CustomCKFinderAuth
配置选项
CKFinder连接器的默认配置是从CKSourceCKFinderBundle::Resources/config/ckfinder_config.php
文件中获取的。由于Symfony配置合并机制,您可以有多种方式覆盖它。默认配置以常规PHP文件的形式提供,但只要结构有效,您可以使用您喜欢的格式(YAML、XML)。
覆盖默认配置的最简单方法是复制ckfinder_config.php
文件到您的应用程序config
目录,然后在主配置文件中导入它。
# app/config/config.yml imports: ... - { resource: ckfinder_config.php }
从现在开始,所有连接器配置选项都将从app/config/ckfinder_config.php
获取。
另一种配置CKFinder的方法是在您的app/config/config.yml
中直接在ckfinder
节点下包含所需选项。
# app/config/config.yml ckfinder: connector: licenseName: LICENSE-NAME licenseKey: LICENSE-KEY authenticationClass: AppBundle\CustomCKFinderAuth\CustomCKFinderAuth resourceTypes: MyResource: name: MyResource backend: default directory: myResource
注意:所有未定义的选项将从默认配置文件中获取。
有关可能的连接器配置选项的更多信息,请参阅CKFinder 3 – PHP Connector 文档。
CKFinder捆绑包提供了两个额外选项
authenticationClass
– CKFinder身份验证服务类的名称(默认为CKSource\Bundle\CKFinderBundle\Authentication\Authentication
)connectorClass
– CKFinder连接器服务类的名称(默认为CKSource\CKFinder\CKFinder
)
用法
捆绑包代码包含一些可能对您有用的使用示例。要启用它们,请取消注释CKSourceCKFinderBundle::Resources/config/routing.yml
中的ckfinder_examples
路由。
ckfinder_examples: pattern: /ckfinder/examples/{example} defaults: { _controller: CKSourceCKFinderBundle:CKFinder:examples, example: null }
之后,您可以通过导航到/ckfinder/examples
路径来查看可用示例的列表。要了解它们的代码,请检查CKFinderController
类(CKSourceCKFinderBundle::Controller/CKFinderController.php
)。
在模板中包含主要的CKFinder JavaScript文件
在模板中包含ckfinder.js
的首选方法是在模板中包含CKFinder设置模板,如下所示:
{% include "CKSourceCKFinderBundle::setup.html.twig" %}
包含的模板将渲染所需的script
标签并配置有效的连接器路径。
<script type="text/javascript" src="/bundles/cksourceckfinder/ckfinder/ckfinder.js"></script> <script>CKFinder.config( { connectorPath: '/ckfinder/connector' } );</script>
CKFinder文件选择器
捆绑包注册了一个表单字段类型——CKFinderFileChooserType
——允许您轻松地将CKFinder集成到表单中作为文件选择器。在CKFinder中选择文件后,相应的输入字段将自动填充文件URL。您可以在/ckfinder/examples/filechooser
路径下查看一个工作示例。
文件选择器字段基于常规的text
类型,因此它继承了所有配置选项。它还提供了一些自定义选项
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
mode |
字符串 |
popup |
CKFinder在点击“浏览”按钮后打开的模式。允许的值是modal 和popup 。 |
button_text |
字符串 |
浏览 |
按钮上显示的文本。 |
button_attr |
数组 |
[] |
按钮元素的属性。 |
一个简单的使用示例可能如下所示
$form = $this->createFormBuilder() ->add('file_chooser1', CKFinderFileChooserType::class, [ 'label' => 'Photo', 'button_text' => 'Browse photos', 'button_attr' => [ 'class' => 'my-fancy-class' ] ]) ->getForm();
注意:要在您的表单中使用CKFinder文件选择器,您仍然需要在模板中包含主要的CKFinder JavaScript文件(请参阅在模板中包含主要的CKFinder JavaScript文件)。