Symfony-variable existiert nicht im Zweig
Habe ich diese zwei Entitäten Users.php
und sprovider.php
und ein UserController.php
Die Sache, die mich stört, ist das Ergebnis, wenn ich versuche zu Rendern eine Vorlage in dieser Funktion.
/**
* @Route("/sproviderhome", name="sprovider_home")
*/
public function sproviderHomeAction(Request $request){
$email = $request->get('email');
$password = $request->get('password');
$user= $this->getDoctrine()
->getRepository('AppBundle:Users')->
findOneBy(array('email' => $email, 'password' => $password));
$jobs = $this->getDoctrine()
->getRepository('AppBundle:jobs')
->findAll();
if($user){
return $this->render('home/sprovider.html.twig', array(
'user' => $user,
'jobs' => $jobs,
));
}else{
return $this->render('home/login.html.twig', array(
'message' => "Sorry, you need to login first.",
));
}
}
Ergebnis in sprovider.html.twig
:
Variable "Arbeitsplätze" existiert nicht im Hause/sprovider.html-Code.Zweig in Zeile 8
sprovider.html-Code.Zweig:
{% extends '::base.html.twig' %}
{% block body %}
{% if user is defined %}
<h2 class="page-header">Welcome {{ user.name }}</h2>
{% endif %}
{% for job in jobs %}
{{ job.name }}
{% endfor %}
{% endblock %}
Das merkwürdige hier ist, dass $user
existiert, aber $jobs
nicht.
Was ich versucht habe, so weit ist um einen dump der jobs
und es ist kein problem, die Arbeitsplätze sind in der Variablen.
Andere Sache, die ich versucht habe, ist, übergeben Sie eine Zeichenfolge wie diese:
return $this->render('home/sprovider.html.twig', array(
'user' => $user,
'jobs' => 'jobs',
));
Gleiche Ergebnis. Sieht aus wie das rendering wird nur das erste Objekt, das ist seltsam, denn ich bin vorbei ein array()
. Übersehe ich etwas wichtiges? Kann das etwas damit zu tun haben cache
? Ich räumte beide browser und Lehre cache, immer noch nichts. Ich kann nicht an nichts anderes denken, dieses zu verursachen. In anderen Funktionen im gleichen controller hatte ich kein problem-rendering ein array.
Das ist die Sache. Wie es aussieht ist es nicht. Wie kann ich sicher sein?
Können Sie Debuggen den Wert von $jobs, bevor er eingestellt ist twig? Dies ist auch sicherzustellen, dass es ist ein array wie erwartet.
überprüfen Sie die Tippfehler
job.name
statt jobs.name
Ich denke
->getRepository('AppBundle:jobs')
ist die problematische Zeile. Nach bundle-name der Entität gesetzt werden sollte, die ein groß-Wort. Versuchen ->getRepository('AppBundle:Jobs')
und leeren Sie Ihren cache. Es wird funktionieren, glaube ich.InformationsquelleAutor Georgi Georgiev | 2016-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Schleife sicher in Fall gibt es keine jobs definierte variable stellen einer Bedingung vor.
InformationsquelleAutor Marcos Labad
ändern
zu
und
zu
Es könnte besser sein, um dieses zu
Hast du noch bekommen : Variable "Arbeitsplätze" existiert nicht im Hause/sprovider.html-Code.Zweig in Zeile 8 ?
Ja, Sir. Gleiche Sache.
Ich denke, user-variable ist nicht definiert, auch, aber Sie hatte nicht den Fehler mit dem if-Anweisung. Sie vielleicht vergessen, hinzuzufügen AppBundle in deine render-Methode versuchen : AppBundle:home/sprovider.html-Code.Zweig. Ofc, ersetzen AppBundle mit dem Namen Ihres bundle
gut, jetzt habe ich auch nichts. Die
white page of death
.InformationsquelleAutor François Dupont
Fand ich die Lösung des Problems. Ich bin mit einem login-Formular, prüft den Typ der Benutzer vor der Umleitung zu verschiedenen "homepage". Stellt sich heraus, ich war nicht vorbei der überprüft
user
diesersproviderHome
- Funktion, sondern direkt die rendering -sprovider.html.twig
mit nur einer variable übergeben ->user
.Lösung 1
Hinzufügen
werden die login-Funktion auf und übergibt sowohl
user
undjobs
, dann loszuwerden, diesproviderHome
Funktion.Lösung 2 ordentlicher Lösung
Statt
return $this->render(........)
im login-Funktion, die ich verwendet,und fügen Sie
$user
als parameter an diesproviderHome
Funktion. Dann fügen Siein der Funktion und es ist alles gut. Auch loszuwerden
Request $request
als argument, und entfernen Sie die zwei ZeilenEntschuldigung an diejenigen, die Ihr bestes versucht, ohne Ergebnis. Mein Fehler, nicht zu erwähnen, die login-Funktionalität.
InformationsquelleAutor Georgi Georgiev