Как интегрировать ckfinder с yii2

Я пытаюсь интегрировать ckeditor и ckfinder в проект, используя yii2. Я поместил папки ckeditor и ckfinder в root/vendor и сделал необходимые настройки, ckeditor работает нормально, ckfinder также показывает всплывающее окно файлового браузера с кнопкой «Browser server». Но всякий раз, когда я нажимаю кнопку обзора, всплывающее окно выбора файлов не открывается, вместо этого отображается ошибка «страница не найдена».

Я попытался интегрировать ckfinder, написав следующие строки кода в ckeditor/config.js:

config.filebrowserBrowseUrl = 'hostname/vendor/ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = 'hostname/vendor/ckfinder/ckfinder.html?type=Images';
config.filebrowserFlashBrowseUrl = 'hostname/vendor/ckfinder/ckfinder.html?type=Flash';
config.filebrowserUploadUrl = 'hostname/vendor/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files';
config.filebrowserImageUploadUrl = 'hostname/vendor/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images';
config.filebrowserFlashUploadUrl = 'hostname/vendor/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';

Но я не нашел решения.

Кто-нибудь может помочь мне решить эту проблему?


person RP-ind-Dev    schedule 20.06.2016    source источник
comment
Несколько вопросов: Какую версию CKFinder вы используете? Не могли бы вы уточнить, какая кнопка обзора не работает? Это пользовательская кнопка на странице, которая запускает браузер файлов? Также проверьте, правильно ли работают образцы CKFinder.   -  person zaak    schedule 20.06.2016
comment
Может быть, это поможет github.com/2amigos/yii2-ckeditor-widget   -  person Vitaly    schedule 20.06.2016
comment
Кнопка «Обзор сервера» находится во всплывающем окне для добавления изображений/файлов к содержимому. Всплывающее окно открывается при щелчке значка изображения в редакторе. Я просто переместил папку ckeditor и ckfinder из «root/vendor» в «root/web» и сделал другие настройки, как и раньше, и проблема теперь исправлена. Кажется, что в yii2 никакие сторонние файлы не доступны напрямую за пределами «веб-каталога», если они не отформатированы как расширение yii.   -  person RP-ind-Dev    schedule 01.07.2016


Ответы (1)


Я создал Custom CKEditorAsset в yii2 следующим образом:

namespace vendor\yiif\ckeditor;


use iutbay\yii2kcfinder\KCFinder;
use iutbay\yii2kcfinder\KCFinderAsset;

class CKEditorAsset extends \dosamigos\ckeditor\CKEditorAsset
{
    public $depends = [
        'yii\web\YiiAsset',
        'yii\web\JqueryAsset',
        //'iutbay\yii2kcfinder\KCFinderAsset'
    ];

    public function init()
    {
        $register = KCFinderAsset::register(\Yii::$app->view);
        $kcfinderUrl = $register->baseUrl;

        \Yii::$app->view->registerJs(<<<js
            CKEDITOR.config.filebrowserBrowseUrl="$kcfinderUrl/browse.php?opener=ckeditor&type=files";
            CKEDITOR.config.filebrowserUploadUrl="$kcfinderUrl/upload.php?opener=ckeditor&type=files";
js
    );



        // kcfinder options
        // http://kcfinder.sunhater.com/install#dynamic
        $kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [
            'uploadURL' => \Yii::getAlias('@web/uploads/modules/ckfinder'),
            'uploadDir'=>\Yii::getAlias('@app/web/uploads/modules/ckfinder'),
            'access' => [
                'files' => [
                    'upload' => true,
                    'delete' => false,
                    'copy' => false,
                    'move' => false,
                    'rename' => false,
                ],
                'dirs' => [
                    'create' => true,
                    'delete' => false,
                    'rename' => false,
                ],
            ],
        ]);

// Set kcfinder session options
        \Yii::$app->session->set('KCFINDER', $kcfOptions);
        parent::init();
    }
}
person morteza khadem    schedule 11.02.2017