Yii2. Установка расширений вручную
Выполним установку расширения CKEditor без использования Composer. Прибегать к ручному способу установки расширения нужно только в крайнем случае. Например, когда нет возможности установить Composer на компьютер или сервер. Потому что Composer выполнит установку быстрее и без ошибок, которые возможны при копировании и редактировании файлов.
Идем на GitHub, скачиваем расширение CKEditor и распаковываем zip-архив. Открываем файл composer.json
в редакторе:
{ "name": "mihaildev/yii2-ckeditor", "keywords": ["yii", "wysiwyg", "editor", "CKEditor"], "description": "Yii2 CKEditor", "homepage": "https://github.com/MihailDev/yii2-ckeditor", "license": "BSD-3-Clause", "type": "yii2-extension", "minimum-stability":"stable", "authors": [ { "name": "Mihail", "email": "mihail.kucher@gmail.com", "homepage": "https://github.com/MihailDev", "role": "Developer" } ], "autoload": { "psr-4": {"mihaildev\\ckeditor\\": ""} }, "require": { "yiisoft/yii2": "*" }, "extra": { "asset-installer-paths": { "npm-asset-library": "vendor/npm", "bower-asset-library": "vendor/bower" } } }
Смотрим секцию autoload
, копируем распакованные файлы в директорию vendor/mihaildev/ckeditor
. Открываем на редактирование файл vendor/composer/autoload_psr4.php
:
<?php // autoload_psr4.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'yii\\swiftmailer\\' => array($vendorDir . '/yiisoft/yii2-swiftmailer/src'), 'yii\\jui\\' => array($vendorDir . '/yiisoft/yii2-jui'), 'yii\\gii\\' => array($vendorDir . '/yiisoft/yii2-gii/src'), 'yii\\faker\\' => array($vendorDir . '/yiisoft/yii2-faker'), 'yii\\debug\\' => array($vendorDir . '/yiisoft/yii2-debug/src'), 'yii\\composer\\' => array($vendorDir . '/yiisoft/yii2-composer'), 'yii\\codeception\\' => array($vendorDir . '/yiisoft/yii2-codeception'), 'yii\\bootstrap\\' => array($vendorDir . '/yiisoft/yii2-bootstrap/src'), 'yii\\' => array($vendorDir . '/yiisoft/yii2'), 'cebe\\markdown\\' => array($vendorDir . '/cebe/markdown'), 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), 'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'), 'Faker\\' => array($vendorDir . '/fzaninotto/faker/src/Faker'), 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/EmailValidator'), );
Добавляем в конец массива еще один элемент:
'mihaildev\\ckeditor\\' => array($vendorDir . '/mihaildev/ckeditor'),
Далее, открываем на редактирование файл vendor/yiisoft/extensions.php
:
<?php $vendorDir = dirname(__DIR__); return array ( 'yiisoft/yii2-swiftmailer' => array ( 'name' => 'yiisoft/yii2-swiftmailer', 'version' => '2.1.2.0', 'alias' => array ( '@yii/swiftmailer' => $vendorDir . '/yiisoft/yii2-swiftmailer/src', ), ), 'yiisoft/yii2-codeception' => array ( 'name' => 'yiisoft/yii2-codeception', 'version' => '2.0.6.0', 'alias' => array ( '@yii/codeception' => $vendorDir . '/yiisoft/yii2-codeception', ), ), 'yiisoft/yii2-bootstrap' => array ( 'name' => 'yiisoft/yii2-bootstrap', 'version' => '2.0.9.0', 'alias' => array ( '@yii/bootstrap' => $vendorDir . '/yiisoft/yii2-bootstrap/src', ), ), 'yiisoft/yii2-faker' => array ( 'name' => 'yiisoft/yii2-faker', 'version' => '2.0.4.0', 'alias' => array ( '@yii/faker' => $vendorDir . '/yiisoft/yii2-faker', ), ), 'yiisoft/yii2-jui' => array ( 'name' => 'yiisoft/yii2-jui', 'version' => '2.0.7.0', 'alias' => array ( '@yii/jui' => $vendorDir . '/yiisoft/yii2-jui', ), ), 'yiisoft/yii2-debug' => array ( 'name' => 'yiisoft/yii2-debug', 'version' => '2.1.1.0', 'alias' => array ( '@yii/debug' => $vendorDir . '/yiisoft/yii2-debug/src', ), ), 'yiisoft/yii2-gii' => array ( 'name' => 'yiisoft/yii2-gii', 'version' => '2.1.0.0', 'alias' => array ( '@yii/gii' => $vendorDir . '/yiisoft/yii2-gii/src', ), ), );
Добавляем в конец массива еще один элемент:
'mihaildev/ckeditor' => array ( 'name' => 'mihaildev/ckeditor', 'alias' => array ( '@mihaildev/ckeditor' => $vendorDir . '/mihaildev/ckeditor', ), ),
Все, установка завершена, можно использовать редактор в view-шаблоне:
<?php /* @var $this yii\web\View */ use yii\widgets\ActiveForm; use yii\helpers\Html; use yii\jui\DatePicker; use mihaildev\ckeditor\CKEditor; $this->title = 'Обратная связь'; ?> <?php if (Yii::$app->session->hasFlash('success')): ?> <?php if (Yii::$app->session->getFlash('success')): ?> <p>Данные формы были успешно отправлены</p> <?php else: ?> <p>Допущены ошибки при заполнении формы</p> <?php endif; ?> <?php endif; ?> <div class="page-feedback"> <h1><?= Html::encode($this->title) ?></h1> <?php $form = ActiveForm::begin(['id' => 'feedback-form', 'options' => ['novalidate' => '']]); ?> <?= $form->field($model, 'name')->textInput(); ?> <?= $form->field($model, 'email')->textInput(); ?> <?= $form->field($model, 'birthday')->textInput()->widget( DatePicker::class, [ 'dateFormat' => 'php:d.m.Y', 'options' => [ 'autocomplete'=>'off' ], 'clientOptions' => [ 'changeMonth' => true, 'changeYear' => true, // с (1950 год) по (настоящее-10лет) 'yearRange' => '1950:-10', ] ] ); ?> <?= $form->field($model, 'body')->widget( CKEditor::className(), [ 'editorOptions' => [ // варианты: basic, standard, full 'preset' => 'basic', // значение по умолчанию false 'inline' => false, ], ] ); ?> <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']); ?> <?php ActiveForm::end(); ?> </div>
Поиск: Yii2 • Виджет • Редактор • Фреймворк • Расширение • Extension • CKEditor • Composer • Установка