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