2015-08-25 67 views
0

我遇到了問題。我使用CKEditor來創建HTML編輯器,並使用KCFinder在HTML編輯器中上傳&插入圖像。我的問題是,我不能顯示圖像,我通過KCFinder上傳的,在我的前端網站Yii2 KCFinder:如何將圖像上傳到「Common」或「Frontend」目錄

我的代碼(在後端/視圖/ _form)

<?php 
use yii\helpers\Html; 
use yii\widgets\ActiveForm; 
use backend\modules\CKEditor; 
use iutbay\yii2kcfinder\KCFinder; 

$kcfOptions = array_merge(KCFinder::$kcfDefaultOptions, [ 
    //'uploadURL' => Yii::getAlias('@web').'/upload', 
    'uploadURL' => Yii::getAlias('@common').'/upload', 
    'access' => [ 
     'files' => [ 
      'upload' => true, 
      'delete' => true, 
      'copy' => true, 
      'move' => true, 
      'rename' => true, 
     ], 
     'dirs' => [ 
      'create' => true, 
      'delete' => true, 
      'rename' => true, 
     ], 
    ], 
]); 

// Set kcfinder session options 
Yii::$app->session->set('KCFINDER', $kcfOptions); 
?> 

<div class="emails-form"> 
    <?php yii\widgets\Pjax::begin(['id' => 'new_email']) ?> 
    <?php $form = ActiveForm::begin(['options' => ['enctype'=>'multipart/form-data' ]]); ?> 
    <?= $form->field($model, 'receiver_name')->textInput(['maxlength' => 200]) ?> 
    <?= $form->field($model, 'receiver_email')->textInput(['maxlength' => 200]) ?> 
    <?= $form->field($model, 'subject')->textInput(['maxlength' => 200]) ?> 
    <?//= $form->field($model, 'content')->textarea(['maxlength' => 200]) ?> 
    <?= $form->field($model, 'content')->widget(CKEditor::className(), [ 
     'options' => ['rows' => 6], 
     'preset' => 'full' 
     //'preset' => 'basic' 
    ]) 
    ?> 
    <?= $form->field($model, 'attachment')->fileInput(['maxlength' => 200]) ?> 

    <div class="form-group"> 
     <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
    </div> 
    <?php ActiveForm::end(); ?> 
    <?php yii\widgets\Pjax::end() ?> 
</div> 

現在我的代碼可以正常工作,但圖像將被上傳到「後端/網絡/上傳」如何通過KCFinder將圖像上傳到「前端/網頁/上傳」? 或者有什麼建議解決方案?我需要使用CKEditor + KCFinder創建新聞表單,然後才能在前端網站上顯示內容。 非常感謝您的幫助。

回答

0

最後,我找到了解決辦法。我創建通過使用命令的鏈接:

cd /path/to/project/frontend/web 
ln -s ../../backend/web/upload upload 

在那之後,我編輯的的httpd-vhosts.conf允許「選項+的FollowSymLinks」

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot "/path/to/project/frontend/web" 
    Options +FollowSymlinks 
    ... 
</VirtualHost> 

不要忘了「重啓」apache服務。 :)

參考網站 - >http://www.yiiframework.com/wiki/799/yii2-app-advanced-on-single-domain-apache-nginx/

0

看看Yii2提供了前端/後端供我們使用。我建議忘記它現在在後端。
你可以做的是設置參數將進入後端/網絡/更新和保存文件名只在數據庫我的意思是上傳文件夾後的文件名/路徑。 是這樣的:

這將是你的bakcend:backend.example.com/uploads/ 和上傳後你的db文件名:file.jpg,profile/firstuser.png。

當您能夠從前端訪問它時,只需將上傳文件夾從後端複製到前端即可。

看我知道這不是寫解決方案,但它爲我工作。我認爲它會幫助我。

這是我的第一個答案,請詢問,如果我不清楚:)

感謝

+0

嗨,謝謝你的回答,但我不能使用該解決方案。因爲我的目標是創建一個允許後端用戶創建新聞的新聞模塊,然後新聞將顯示在前端(公共用戶可以閱讀新聞)。所以我需要找到一個解決方案,允許從後端上傳文件,通過使用CKFinder,fronend/web/upload。 –