использование файлового менеджера roxymce в yii2

Я новичок в yii2. Я хочу использовать roxymce файловый менеджер в моем yii2 проект. Я последовал за эти документы для использования в yii но при использовании эта секция, я получил Undefined variable: form ошибка и при использовании ActiveForm::begin() в я получаю Getting unknown property: navatech\roxymce\models\UploadForm::thumb ошибка. Я хочу знать, когда я должен использовать это контроллеры в моем проекте. Этот код для моего fileupload Посмотреть:

<?php

use yii\widgets\ActiveForm;
use yii\web\View;
use yii\helpers\Url;$this->title = Yii::t('app', 'Upload Course Files');
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Presented Courses'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="row">
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data'], 'action' => '#']); ?>
<?php $form->field($model, 'file')->fileInput(['id' => 'fieldID1'])->label(false) ?>
<a href="<?=Url::to([
'/roxymce/default',
'type' => 'media',
'input' => 'fieldID1',
'dialog' => 'iframe',
]) ?>" id="fileup" class="fancybox" ><i class="fa fa-upload"></i></a>
<?php ActiveForm::end();?><?php
$this->registerJsFile('@web/js/jquery.fancybox.min.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerCssFile('@web/css/jquery.fancybox.min.css', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJs('
$("#fileup").fancybox({  type: "iframe"});
', View::POS_END);
?>

И этот код для контроллера этого представления (fileupload):

public function actionUploadfile()
{
$model = new UploadForm();
return $this->render('uploadfile',['model'=>$model]);
}

И это мой основной файл конфигурации в директории бэкэнда:

'modules' => [

'roxymce' => [
'class' => 'navatech\roxymce\Module',
'uploadFolder' => '@app/web/uploads/images',
'uploadUrl' => '/uploads/images',
],

],

Я использовал шаблон yii2 advancd. Если кто-то использовал этот модуль, пожалуйста, подскажите мне.

1

Решение

Просто потому что переменная $form не определен, если вы используете код, как в примере. По вашему мнению, когда вы используете расширение, вам нужно использовать ActiveForm::begin() как это:

Простой пример

<?php

$form = ActiveForm::begin(['id' => 'roxymce-form']);

echo $form->field($model, 'thumb')->textInput(['id' => 'fieldID'])->label(false);

?>

<a href="<?= \yii\helpers\Url::to([
'/roxymce/default',
'type'   => 'image',
'input'  => 'fieldID',
'dialog' => 'fancybox',
]) ?>"><i class="fa fa-upload"></i></a>

<script>
$("a").fancybox();
</script>

<?php ActiveForm::end(); ?>

[Редактировать]

Это было довольно сложно запустить, но в конце концов мне это удалось. Я использую базовый шаблон Yii2.
Начните с установки пакета с composer как в руководстве. После этого создайте классы пакетов ресурсов для публикации пакетов javascript. Это мои активы, и они находятся в applicationroot/assets папка:

активы / AppAsset.php

<?php
namespace app\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
public $jsOptions = [
'position' => \yii\web\View::POS_HEAD,
];
}

активы / FancyBoxAsset.php

<?php
namespace app\assets;

use yii\web\AssetBundle;

class FancyBoxAsset extends AssetBundle
{
public $sourcePath = '@bower/fancybox/source';

public $js = [
'jquery.fancybox.pack.js',
];
}

активы / FontAwesomeAsset.php

<?php
namespace app\assets;

use yii\web\AssetBundle;

class FontAwesomeAsset extends AssetBundle
{
public $sourcePath = '@bower/fontawesome';
public $css = [
'css/font-awesome.min.css',
];
}

активы / LazyLoadAsset.php

<?php
namespace app\assets;

use yii\web\AssetBundle;

class LazyLoadAsset extends AssetBundle
{
public $sourcePath = '@bower/jquery.lazyload';
}

активы / PatternflyTreeviewAsset.php

<?php
namespace app\assets;

use yii\web\AssetBundle;

class PatternflyTreeviewAsset extends AssetBundle
{
public $sourcePath = '@bower/patternfly-bootstrap-treeview/dist';
public $css = [
'bootstrap-treeview.css',
];
public $js = [
'bootstrap-treeview.js',
];
}

активы / TinymceAsset.php

<?php

namespace app\assets;

use yii\web\AssetBundle;

class TinymceAsset extends AssetBundle
{
public $sourcePath = '@bower/tinymce';
public $jsOptions = [
'position' => \yii\web\View::POS_HEAD,
];
}

Теперь вы должны добавить в ваш конфигурационный файл следующие строки кода:

конфиг / web.php

return [
'id' => 'basic',
'basePath' => dirname(__DIR__),
...
'modules' => [
'roxymce' => [
'class' => 'navatech\roxymce\Module',
'uploadFolder' => '@app/web/uploads/images',
'uploadUrl' => '../uploads/images',
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>/' => '<module>/<controller>/<action>',
],
]
...
];

После вам необходимо настроить приложение для работы в чистом контексте URL. Следуйте за этим для получения дополнительной информации о: Включить чистый URL в Yii2

Теперь вы можете полностью использовать плагин во всех его контекстах. Есть два метода для его использования:

  1. Интегрировано с TinyMce

просмотров / сайт / tinymceIntegrated.php

<?php
use \app\assets;

assets\FontAwesomeAsset::register($this);
assets\LazyLoadAsset::register($this);
assets\FancyBoxAsset::register($this);
assets\PatternflyTreeviewAsset::register($this);
assets\TinymceAsset::register($this);

// Include ActiveRecord Model
echo \navatech\roxymce\widgets\RoxyMceWidget::widget([
'model'     => app\models\YourModel::findOne(1),
'attribute' => 'content',
]);

// Sample HTML without ActiveRecord Model
echo \navatech\roxymce\widgets\RoxyMceWidget::widget([
'name' => 'Post[content]',
]);
  1. Без TinyMce

просмотров / сайт / tinymceWithout.php

<?php
use yii\helpers\Html;
use \app\assets;

assets\FontAwesomeAsset::register($this);
assets\LazyLoadAsset::register($this);
assets\FancyBoxAsset::register($this);
assets\PatternflyTreeviewAsset::register($this);
//assets\TinymceAsset::register($this);

$js = <<<JS
$("a").fancybox();
JS;
$this->registerJs($js, \yii\web\View::POS_READY, 'upload-handler');
?>
<a href="<?= \yii\helpers\Url::to([
'/roxymce/default',
'type' => 'image',
'dialog' => 'fancybox',
]) ?>"><i class="fa fa-upload"></i></a>

С этой конфигурацией у меня работают.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]