Yii2:如何用Bootstrap类渲染Partial?

b91juud3  于 2023-02-14  发布在  Bootstrap
关注(0)|答案(3)|浏览(145)

我正在尝试使用renderPartial函数和Bootstrap类。

这是我在控制器文件中的函数:

public function actionPrintReport() {
    Yii::$app->response->format = 'pdf';
    return $this->renderPartial('_myReport', []);
}

**这是呈现的my _myReport文件:**我自己的样式可以工作,但Bootstrap类不能。

<div class="box box-warning">
    <div class="box-body">
        Text
    </div>
</div>

但结果没有显示任何Bootstrap类:

我还尝试了renderAjax,但结果相同。

ijxebb2r

ijxebb2r1#

这正是renderPartial()函数的意义所在
呈现视图而不应用布局。
此方法与render()的不同之处在于它不应用任何布局。
renderPartial函数通常用于在一个页面中多次呈现同一代码块的情况。您期望的结果是什么?您想做什么?
registerAssets通常加载在主视图文件中(不呈现的文件)。您应该查看主布局文件并了解如何加载资源。

ccrfmcuu

ccrfmcuu2#

您需要:

Asset::register($this);

在你的视野里_myReports

dgtucam1

dgtucam13#

我也想和你一样,我找到了解决办法。
您只需要检查主文件的结构:
1.在“_...”文件中,添加HTML

<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>" class="h-100">
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php $this->registerCsrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>

<body class="d-flex flex-column h-100">
<?php $this->beginBody() ?>

<div class="container-xl outlined-box p-2 m-1 ">
    <div class="row  ">
    test
    </div>
    <a href="#" class="btn btn-primary ">asdasd</a>
</div>

<h1>asdasdasd</h1>

<?php $this->endBody() ?>
</body>
</html>

<?php $this->endPage();

1.别忘了把这个放在PHP文件的顶部(顺便说一句,导入后)

frontend\assets\AppAsset::register($this);

相关问题