gpt4 book ai didi

Laravel:如何仅渲染模板的一部分?

转载 作者:行者123 更新时间:2023-12-03 07:49:11 24 4
gpt4 key购买 nike

我正在尝试在我的网站上使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com