作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的网站上使用 pjax,这意味着对于整页请求,我将渲染整个模板(这是正常行为),但在 pjax 请求上,我只想渲染一个部分。我的模板都扩展了主模板。
我怎样才能最优雅地做到这一点?
最佳答案
这是一个老问题,但我想提出另一个解决方案。
假设您有一个名为 main.blade.php 的 View 布局,以及另一个扩展 main 的名为 page.blade.php 的 View
main.blade.php
<!DOCTYPE html>
<html lang="en-GB">
<head>
<title>My Title</title>
@section('head')
<link rel="stylesheet" href="{{ URL::asset('css/style.css') }}">
@show
</head>
<body>
@yield('content')
@section('footer')
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="{{ URL::asset('js/main.js') }}"></script>
@show
</body>
</html>
page.blade.php
@extends('main')
@section('content')
<div class="container">
This is a rendered page
</div>
@stop
只是一个简单的基本模板即可开始使用。在你的 Controller 中,如果你返回一个 View::make('page')
你将获得完整的 HTML,但 Laravel 提供了一种返回特定部分的方法。下面是一个示例,说明如何根据是否是来自 Controller 内的 ajax 调用来显示您想要的内容:
my_controller.php
function get_index() {
$view = View::make('page');
if(Request::ajax()) {
$sections = $view->renderSections(); // returns an associative array of 'content', 'head' and 'footer'
return $sections['content']; // this will only return whats in the content section
}
// just a regular request so return the whole view
return $view;
}
现在,当您对页面进行 ajax 调用时,它只会返回内容部分,而不是整个 HTML。
关于Laravel:如何仅渲染模板的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096241/
我是一名优秀的程序员,十分优秀!