我的项目遇到了一个难题。在本地主机环境中一切正常,但在heroku上部署后,我有一个错误,作为登录用户:
在呈现模板过程中抛出异常("Warning: session_id(): Session ID不能在已经发送了标头后更改")。
问题只在餐厅和评论小枝文件。删除用户登录检查({% if app.user %})后,一切工作正常,但我需要在我的项目中这样的选项。
TwigError
RuntimeError
in templates/base.html.twig (line 102)
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav ms-auto">
{% if app.user %}
<a class="nav-link" href="{{ path('app_user_panel') }}">Panel użytkownika</a>
{% endif %}
<a class="nav-link" href="/#aboutus">O nas</a>
<a id="login__button" class="nav-link" href="/{{app.user ? 'wyloguj' : 'logowanie'}}"
@click="isOpen = false">
链接到我的项目:https://restrank.herokuapp.com/
链接到存储库:https://github.com/GrzegorzWanat95/RestRank
输入图片描述
我很感激你的帮助。我花了很多时间来修理它,但是我没有办法。我发现这在PHP中是一个常见的问题,但是在Symfony 6中修复不起作用。 更新:我注意到错误与控制器功能有关,该功能显示按名称或城市搜索的餐馆列表。在localhist服务器上,它可以工作,但在部署后从URL获取参数导致错误。
我的控制器在用户登录后导致错误的代码:
#[Route('/szukaj/{type}/{name}', name: 'app_restaurant_query_name', methods: ['GET', 'POST'])]
public function searchByName(RestaurantRepository $restaurantRepository, $type, $name)
{
$values = dump([$type, $name]);
switch ($type){
case 1 :
if($name == null){
return $this->render('restaurant/index.html.twig', [
'restaurants' => $restaurantRepository->findAll(),
]);
}
$restaurants = $restaurantRepository->findBy(
['Name' => $name]
);
return $this->render('restaurant/index.html.twig', [
'restaurants' => $restaurants,
]);
break;
case 2 :
if($name == null){
return $this->render('restaurant/index.html.twig', [
'restaurants' => $restaurantRepository->findAll(),
]);
}
$restaurants = $restaurantRepository->findBy(
['City' => $name]
);
return $this->render('restaurant/index.html.twig', [
'restaurants' => $restaurants,
]);
break;
default:
return $this->render('restaurant/index.html.twig', [
'restaurants' => $restaurantRepository ->findAll(),
]);
break;
}
}
我不知道如何通过URL传递搜索参数并避免此错误。
饭店控制器中的转储功能导致错误。
删除后一切正常。应该是:
$value = $request->query->get('Type');
$name = $request->query->get('Name');