Php Symfony 4,检查模板是否已加载?
我加载了一个模板Php Symfony 4,检查模板是否已加载?,php,symfony,Php,Symfony,我加载了一个模板home.html.twig和一个ajax请求,如下代码所示。那很好用 但是如果我用路径mywebsite.com/search/foo加载我的网站,那么我只有searchListing.html.twig显示,而没有加载任何home.html.twig,因此网站被破坏 那么,在返回之前,控制器中是否有办法检查我的模板home.html.twig是否已加载,如果未加载,是否将其插入块中并插入searchListing.html.twig 我的html: 以下是我的ajax: $
home.html.twig
和一个ajax请求,如下代码所示。那很好用
但是如果我用路径mywebsite.com/search/foo
加载我的网站,那么我只有searchListing.html.twig
显示,而没有加载任何home.html.twig
,因此网站被破坏
那么,在返回之前,控制器中是否有办法检查我的模板home.html.twig
是否已加载,如果未加载,是否将其插入块中并插入searchListing.html.twig
我的html:
以下是我的ajax:
$(document).ready(function() {
$('.trigger').on('click', function(e) {
e.preventDefault();
const $link = $(e.currentTarget);
$.ajax({
url: $link.attr('href'),
type: 'get'
})
.done(function (data) {
$('#main-content').html(data)
})
});
});
我的控制器:
class Search extends AbstractController {
/**
* @Route("/search/{var}", name="search")
*/
public function search ($var) {
// CHECK HERE
// if home.html.twig is loaded > load searchListing.html.twig inside a given block
// if home.html.twig is not loaded > load home.html.twig then load searchListing.html.twig inside a given block
return $this->render('searchListing.html.twig',[
'var' => $var,
]);
}
}
如果我理解正确,您需要:
/**
* @Route("/search/{var}", name="search")
*/
public function search (Request $request, $var) {
// render only search results for ajax request
if ($request->isXmlHttpRequest()) {
return $this->render('searchListing.html.twig',[
'var' => $var,
]);
}
return $this->render('home.html.twig',[
'var' => $var,
]);
}
您可以检查($request->isXmlHttpRequest())是否为ajax请求并加载home\u page.html.twig。但是,只有当客户端发送带有:XMLHttpRequest头的
X\u REQUESTED\u时,这才有效。使用jQuery开箱即用,不使用Angular开箱即用。更好的方法是发送一个额外的标志,如withoutloyout=1
,然后在控制器中返回部分响应。这不需要魔法,结果更为详细和干净。但只有当客户端发送带有:XMLHttpRequest
头的X\u REQUESTED\u时,这才有效。使用jQuery开箱即用,不使用Angular开箱即用。更好的方法是发送一个额外的标志,如withoutloyout=1
,然后在控制器中返回部分响应。没有魔法,结果更为详细和干净。它可以工作,但这是相反的方式,而不是检查模板是否已加载,检查这是否是一个Ajax请求,然后加载一个模板或另一个模板。您的意思是:检查模板是否已加载
?@KamilAdryjanek我的意思是检查是否实际显示了home.html.twig
。如果它只是加载列表
;如果未加载home
,则在home块中加载listing
如何将searchListing.html.twig
包含在home.html.twig
中?