PHPackages                             bsdrazor/ckfinder-symfony-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. bsdrazor/ckfinder-symfony-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

bsdrazor/ckfinder-symfony-bundle
================================

CKFinder bundle for Symfony 7.x+

2.1.7(1y ago)024MITPHPPHP &gt;=8.1.0

Since Aug 17Pushed 1y ago2 watchersCompare

[ Source](https://github.com/bsdrazor/ckfinder-symfony-bundle)[ Packagist](https://packagist.org/packages/bsdrazor/ckfinder-symfony-bundle)[ RSS](/packages/bsdrazor-ckfinder-symfony-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (17)Versions (7)Used By (0)

CKFinder 3 Bundle for Symfony
=============================

[](#ckfinder-3-bundle-for-symfony)

This repository contains the CKFinder 3 bundle for Symfony 6+. If you're looking for bundle for older version of Symfony, please use [version 3](https://github.com/ckfinder/ckfinder-symfony-bundle/tree/v3.x.x).

Installation
------------

[](#installation)

1. Add Composer dependency and install the bundle.

    ```
    composer require bsdrazor/ckfinder-symfony-bundle
    ```
2. Run the command to download the CKFinder distribution package.

    After installing the bundle you need to download CKFinder distribution package. It is not shipped with the bundle due to different license terms. To install it, run the following Symfony command:

    ```
    php bin/console ckfinder:download
    ```

    It will download the code and place it in the `Resource/public` directory of the bundle. After that you may also want to install assets, so the public directory will be updated with CKFinder code.

    ```
    php bin/console assets:install
    ```
3. Enable bundle routing.

    Create `config/routes/ckfinder.yaml` with following contents:

    ```
    # config/routes/ckfinder.yaml

    ckfinder_connector:
        resource: "@CKSourceCKFinderBundle/Resources/config/routing.yml"
        prefix:   /
    ```
4. Create a directory for CKFinder files and allow for write access to it. By default CKFinder expects it to be placed in `/userfiles` (this can be altered in configuration).

    ```
    mkdir -m 777 public/userfiles
    ```

    **NOTE:** Since usually setting permissions to 0777 is insecure, it is advisable to change the group ownership of the directory to the same user as Apache and add group write permissions instead. Please contact your system administrator in case of any doubts.

At this point you should see the connector JSON response after navigating to the `/ckfinder/connector?command=Init` route. Authentication for CKFinder is not configured yet, so you will see an error response saying that CKFinder is not enabled.

Configuring Authentication
--------------------------

[](#configuring-authentication)

CKFinder connector authentication is managed by the `ckfinder.connector.auth` service, which by default is defined in the `CKSourceCKFinderBundle\Authentication\Authentication` class. It contains the `authenticate` method that should return a Boolean value to decide if the user should have access to CKFinder. As you can see the default service implementation is not complete and simply returns `false` inside the `authenticate` method, but you can find it useful as a starting stub code.

To configure authentication for the CKFinder connector you need to create a class that implements `CKSource\Bundle\CKFinderBundle\Authentication\AuthenticationInterface`, and point the CKFinder connector to use it.

A basic implementation that returns `true` from the `authenticate` method (which is obviously **not secure**) can look like below:

```
// src/CustomCKFinderAuth/CustomCKFinderAuth.php

namespace App\CustomCKFinderAuth;

use CKSource\Bundle\CKFinderBundle\Authentication\Authentication as AuthenticationBase;

class CustomCKFinderAuth extends AuthenticationBase
{
    public function authenticate(): bool
    {
        return true;
    }
}
```

You may have noticed that `AuthenticationInterface` extends `ContainerAwareInterface`, so you have access to the service container from the authentication class scope.

When your custom authentication is ready, you need to tell the CKFinder connector to start using it. To do that add the following option to your configuration:

Create `config/packages/ckfinder.yaml` file:

```
# config/packages/ckfinder.yaml

ckfinder:
    connector:
        authenticationClass: App\CustomCKFinderAuth\CustomCKFinderAuth
```

Configuration Options
---------------------

[](#configuration-options)

The default CKFinder connector configuration is taken from the `@CKSourceCKFinder/Resources/config/ckfinder_config.php` file. Thanks to the Symfony configuration merging mechanism there are multiple ways you can overwrite it. The default configuration is provided in form of a regular PHP file, but you can use the format you prefer (YAML, XML) as long as the structure is valid.

The simplest way to overwrite the default configuration is copying the `ckfinder_config.php` file to your application config directory, and then importing it in the main configuration file:

```
# config/packages/ckfinder.yaml

imports:
    - { resource: ckfinder_config.php }

...
```

From now all connector configuration options will be taken from copied `ckfinder_config.php`.

Another way to configure CKFinder is to include required options under the `ckfinder` node, directly in your config file.

```
# config/packages/ckfinder.yaml

ckfinder:
    connector:
        licenseName: LICENSE-NAME
        licenseKey: LICENSE-KEY
        authenticationClass: AppBundle\CustomCKFinderAuth\CustomCKFinderAuth

        resourceTypes:
            MyResource:
                name: MyResource
                backend: default
                directory: myResource
```

**Note**: All options that are not defined will be taken from the default configuration file.

To find out more about possible connector configuration options please refer to [CKFinder 3 – PHP Connector Documentation](https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html).

The CKFinder bundle provides two extra options:

- `authenticationClass` – the name of the CKFinder authentication service class (defaults to `CKSource\Bundle\CKFinderBundle\Authentication\Authentication`)
- `connectorClass` – the name of the CKFinder connector service class (defaults to `CKSource\CKFinder\CKFinder`)

Usage
-----

[](#usage)

The bundle code contains a few usage examples that you may find useful. To enable them uncomment the `ckfinder_examples`route in `@CKSourceCKFinder/Resources/config/routing.yml`:

```
ckfinder_examples:
    pattern:     /ckfinder/examples/{example}
    defaults: { _controller: CKSource\Bundle\CKFinderBundle\Controller::examplesAction, example: null }
```

After that you can navigate to the `/ckfinder/examples` path and have a look at the list of available examples. To find out about the code behind them, check the `CKFinderController` class (`CKSourceCKFinderBundle::Controller/CKFinderController.php`).

### Including the Main CKFinder JavaScript File in Templates

[](#including-the-main-ckfinder-javascript-file-in-templates)

The preferred way to include `ckfinder.js` in a template is including the CKFinder setup template, like presented below:

```
{% include "@CKSourceCKFinder/setup.html.twig" %}
```

The included template renders the required `script` tags and configures a valid connector path.

```

CKFinder.config( { connectorPath: '/ckfinder/connector' } );
```

### CKFinder File Chooser

[](#ckfinder-file-chooser)

The bundle registers a form field type — `CKFinderFileChooserType` — that allows for easy integration of CKFinder as a file chooser in your forms. After choosing the file in CKFinder the corresponding input field is automaticaly filled with the file URL. You can see a working example under the `/ckfinder/examples/filechooser` path.

The file chooser field is built on top of the regular `text` type, so it inherits all configuration options. It also provides a few custom options:

NameTypeDefault ValueDescription`mode``string``popup`Mode in which CKFinder will be opened after clicking the "Browse" button. Allowed values are `modal` and `popup`.`button_text``string``Browse`The text displayed in the button.`button_attr``array``[]`Attributes for the button element.A simple usage example may look like below:

```
$form = $this->createFormBuilder()
             ->add('file_chooser1', CKFinderFileChooserType::class, [
                 'label' => 'Photo',
                 'button_text' => 'Browse photos',
                 'button_attr' => [
                     'class' => 'my-fancy-class'
                 ]
             ])
             ->getForm();
```

**Note**: To use CKFinder file chooser in your forms you still need to include the main CKFinder JavaScript file in your template (see *Including the main CKFinder JavaScript file in templates*).

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance48

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~49 days

Recently: every ~61 days

Total

6

Last Release

388d ago

PHP version history (2 changes)2.1.2PHP &gt;=8.1

2.1.5PHP &gt;=8.1.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/0c7419b48020a14c43ddb841364bb1f2e79279f212eab5ec64f62cd5c346b219?d=identicon)[bsdrazor](/maintainers/bsdrazor)

---

Top Contributors

[![bsdrazor](https://avatars.githubusercontent.com/u/44063781?v=4)](https://github.com/bsdrazor "bsdrazor (18 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/bsdrazor-ckfinder-symfony-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/bsdrazor-ckfinder-symfony-bundle/health.svg)](https://phpackages.com/packages/bsdrazor-ckfinder-symfony-bundle)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
