yii2:使用renderPartial方法加载页面时,资产包不会加载资产

时间:2015-04-06 04:09:23

标签: yii2 yii2-advanced-app

我在AppAsset中有我的所有CSS和JavaScript文件,我在布局文件中加载。在我的登录页面上,我不想使用布局,因此我使用了渲染登录视图文件     的RenderPartial() 方法。这样做的时候我创建了一个新的LoginAsset文件并用它来注册登录视图,但我的CSS和JS仍然没有加载。我也尝试使用AppAsset包注册登录视图,但它也没有加载CSS和JS。有什么我做错了吗?在控制器上使用renderPartial时如何加载我的assetbundle?

2 个答案:

答案 0 :(得分:2)

您好@Zack您的问题是您没有指定结束正文和结束页面位置。 我解决了我的问题,将这些代码添加到我的页面底部。

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

答案 1 :(得分:0)

作为Pavel said,你要使用renderAjax()。见下面的解释。

renderPartial()的输出是由视图生成的HTML的和平,没有任何CSS和JS:

<div class="container">
   <input type="text" id="loginform-username" class="form-control" name="LoginForm[username]">
   <input type="password" id="loginform-password" class="form-control" name="LoginForm[password]">
   <button type="submit" class="btn btn-primary btn-block" name="login-button">Log in</button>
</div>

renderAjax()将所有已注册的视图资产中的CSS和JS添加到输出中:

<link href="/assets/f1759119/css/bootstrap.css" rel="stylesheet">
<div class="container">
   <input type="text" id="loginform-username" class="form-control" name="LoginForm[username]">
   <input type="password" id="loginform-password" class="form-control" name="LoginForm[password]">
   <button type="submit" class="btn btn-primary btn-block" name="login-button">Log in</button>
</div>
<style>
   ...
</style>
<script>
   ...
</script>
<script src="/assets/13aa7b5d/jquery.js"></script>
<script src="/assets/302a2946/yii.js"></script>
<script src="/assets/302a2946/yii.activeForm.js"></script>

PS。我认为正确的方法是为登录表单创建单独的布局,并使用通常的render()方法。