2

カスタム ウィジェットを開発しようとしていますが、壁にぶつかりました。インクルードする必要があるサードパーティの JS/CSS ファイルがいくつかありますが、何らかの理由で Yii2 はそれらを登録しません。私は Yii2 のドキュメントのすべてに従いましたが、どこにも到達していないようです。私のディレクトリ構造は次のとおりです。

コンポーネント
 - DildenFeedback.php
 - DildenFeedbackAsset.php
 - views/
  -- feedback.php
 - assets/
  -- feedback.min.js
  -- feedback.min.css

DildenFeedback.php (ウィジェット クラス)

<?php

namespace app\components\yii2feedbackwidget;

use Yii;
use yii\base\Widget;
use app\components\yii2feedbackwidget\DildenFeedbackAsset;

class DildenFeedback extends Widget
{

    public function run() {
        parent::run();
        DildenFeedbackAsset::register($this->view);
        return $this->render('feedback');
    }
}

DildenFeedbackAsset.php (ウィジェット アセット クラス)

<?php

namespace app\components\yii2feedbackwidget;
use yii\web\AssetBundle;

class DildenFeedbackAsset extends AssetBundle {

    public $sourcePath = 'assets/';

    public $css = ['assets/feedback.min.css'];
    public $js = ['assets/feedback.min.js'];

    public $depends = ['yii\web\JqueryAsset'];
}

フィードバック ビュー

?>
<script type="text/javascript">
    $.feedback();
</script>

views/layouts/main.php (呼び出そうとしていたメイン テンプレート)

<?php $this->endBody() ?>
<?php
    echo DildenFeedback::widget();
?>

そのため、ページを調べてみると、feedback.min.js/css がどこにも見つかりません。ビュー ファイルは正しくレンダリングされていますが、AssetBundle の形式が不適切であると推測されます。どんな助けでも大歓迎です。

編集(Yii デバッガー アセットから):
sourcePath /var/www/public/components/yii2feedbackwidget/assets
basePath /var/www/public/web/assets/7e80049a
baseUrl /assets/7e80049a
css assets/feedback.min.css
js assets /feedback.min.js
は yii\web\ JqueryAsset に依存します

編集 2 Yii2 の新規インストールでこれをテストしましたが、同じエラーが発生します。

4

2 に答える 2

1

私はそれを解決しました、そして私は少しばかげていると感じます。結局のところ、ウィジェット呼び出しの場所でした。元の質問で指摘したように、ウィジェットを次のようにエコーしていました。

<?php $this->endBody() ?>
<?php
    echo DildenFeedback::widget();
?>

しかし、私はその電話がどこにあるかに注意を払いませんでした。endBody 呼び出しの前にある必要があります

<?php
    echo DildenFeedback::widget();
?>
<?php $this->endBody() ?>

これで問題は解決しました。ウィジェット呼び出しに向けてくれた Soju に感謝します。

于 2015-11-20T17:46:58.160 に答える