[英]symfony3 pass variable to parent template
如何將變量從控制器傳遞到父模板(base.html.twig)? 我已經在控制器中有一個名為login的頁面的return語句,並嘗試僅使用var添加另一個return語句,如下所示:
$session = $request->getSession();
return $this->render('login.html.twig');
return $this->render('base.html.twig', array('session'=>$session));
但是我收到錯誤消息,即在重新加載頁面時未定義該會話。
登錄后,我想使用session參數進行調整后的導航。在此先感謝您,希望有人可以提供幫助:)
更新:這是我的模板:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Die 3 Meta-Tags oben *müssen* zuerst im head stehen; jeglicher sonstiger head-Inhalt muss *nach* diesen Tags kommen -->
<meta name="description" content="">
<meta name="author" content="">
<title>{% block title %}Welcome{% endblock %}</title>
<!-- Bootstrap-CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="{{ asset('css/grund.css')}}" rel="stylesheet">
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
<!-- Nur für Testzwecke. Kopiere diese Zeilen nicht in echte Projekte! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="../../assets/js/ie-emulation-modes-warning.js"></script>
<!-- Unterstützung für Media Queries und HTML5-Elemente in IE8 über HTML5 shim und Respond.js -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Navigation ein-/ausblenden</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{path('homepage')}}">Test-Projekt</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
{% if session is null %}
<li><a href="{{path('homepage')}}">Home</a></li>
<li><a href="{{path('anmelden')}}">Anmelden</a></li>
<li><a href="{{path('logout')}}">Abmelden</a></li>
{{% endif %}}
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-12">
{% block body %}{% endblock %}
</div>
</div>
</div>
{% block javascripts %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
{% endblock %}
<!-- Bootstrap-JavaScript
================================================== -->
<!-- Am Ende des Dokuments platziert, damit Seiten schneller laden -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<!-- IE10-Anzeigefenster-Hack für Fehler auf Surface und Desktop-Windows-8 -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
這是我的login.html.twig
{% extends 'base.html.twig' %}
{% block title %}Anmeldung{% endblock %}
{% block body %}
<h1 class="page-header">Anmeldung</h1>
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security')}}</div>
{% endif %}
<div class='well' id='logindiv'>
<form action="{{ path('anmelden') }}" method="post" class="form-horizontal">
<div class="form-group">
<label for="_username" class="control-label" id="lblname">Benutzername:</label>
<input type="text" id="username" name="_username" />
</div>
<div class="form-group">
<label for="_password" class="control-label" id="lblpwd">Passwort:</label>
<input type="password" id="passwort" name="_password" />
</div>
<input type="hidden" value="/homepage" name="_target_path" />
<button type="submit" class="btn btn-default">anmelden</button>
</form>
</div>
{% endblock %}
您錯過了撇號,請看:
return $this->render('base.html.twig, array('session'=>$session));
相比
return $this->render('base.html.twig', array('session'=>$session));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.