Reputation: 120
I am new to symfony, I am trying to display an array of result into twig template. here is the issue..
Here's My entity
<?php
namespace XYZ\FirstBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Shifts
* @ORM\Entity(repositoryClass="XYZ\FirstBundle\Repository\ShiftRepository")
* @ORM\Table(name="shifts")
*/
class Shifts
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="date")
*/
private $date;
/**
* @var string
*
* @ORM\Column(name="site_name", type="string", length=255)
*/
private $site_name;
/**
* @var string
*
* @ORM\Column(name="location", type="string", length=255)
*/
private $location;
/**
* @var \DateTime
*
* @ORM\Column(name="start_time", type="time")
*/
private $startTime;
/**
* @var \DateTime
*
* @ORM\Column(name="end_time", type="time")
*/
private $endTime;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set date
*
* @param \DateTime $date
* @return Shifts
*/
public function setDate($date)
{
$this->date = $date;
return $this;
}
/**
* Get date
*
* @return \DateTime
*/
public function getDate()
{
return $this->date;
}
/**
* Set site_name
*
* @param string $location
* @return Shifts
*/
public function setSitename($site_name)
{
$this->site_name = $site_name;
return $this;
}
/**
* Get site_name
*
* @return string
*/
public function getSitename()
{
return $this->site_name;
}
/**
* Set location
*
* @param string $location
* @return Shifts
*/
public function setLocation($location)
{
$this->location = $location;
return $this;
}
/**
* Get location
*
* @return string
*/
public function getLocation()
{
return $this->location;
}
/**
* Set startTime
*
* @param \DateTime $startTime
* @return Shifts
*/
public function setStartTime($startTime)
{
$this->startTime = $startTime;
return $this;
}
/**
* Get startTime
*
* @return \DateTime
*/
public function getStartTime()
{
return $this->startTime;
}
/**
* Set endTime
*
* @param \DateTime $endTime
* @return Shifts
*/
public function setEndTime($endTime)
{
$this->endTime = $endTime;
return $this;
}
/**
* Get endTime
*
* @return \DateTime
*/
public function getEndTime()
{
return $this->endTime;
}
/**
*
* @return string String representation of this class
*/
public function __toString()
{
return (string) $this->site_name;
return (string) $this->location;
return (string) $this->startTime;
return (string) $this->endTime;
}
}
Controller
public function showShiftAction()
{
$em = $this->getDoctrine()->getManager();
$shift =array();
$shift = $em->getRepository('XYZFirstBundle:Shifts')
->findAll();
var_dump($shift);
return $this->render('XYZFirstBundle:Default:allshifts.html.twig', array(
'shift' => $shift
));
}
Repository
<?php
namespace XYZ\FirstBundle\Repository;
use Doctrine\ORM\EntityRepository;
class ShiftRepository extends EntityRepository
{
public function showAllShifts()
{
return $this->getEntityManager()
->createQuery (
'SELECT Shifts FROM XYZFirstBundle:Shifts Shifts'
)
->getResult();
}
}
Now when I use the following in the template..
{% extends 'base.html.twig' %}
{% block title %}RMS-Roster{% endblock %}
{% block pageContent %}
<h2>Create Roster</h2>
<h5>These are all your shifts</h5> <br>
{{ shift.date }}
{{ shift.site_name }}
{{ shift.location }}
{{ shift.startTime }}
{{ shift.endTime }}
{% endblock %}
I get this error - Key "date" for array with keys "0, 1, 2, 3" does not exist in ATTERACFirstBundle:Default:allshifts.html.twig at line 10
but on var_dump()
I am getting the entire array. and when i use this
{% block pageContent %}
<h2>Create Roster</h2>
<h5>These are all your shifts</h5> <br>
{{ shift.0 }}
{{ shift.1 }}
{{ shift.2 }}
{{ shift.3 }}
{% endblock %}
I am getting the only the site_name results.
These are all your shifts
QUT Gardens point QUT kelvin grove milton station Melbourne
I am not sure where i am going wrong. looking forward for insights. Thanks in advance. Cheers
Upvotes: 0
Views: 559
Reputation: 174
{% for shiftObject in shift %} {{ shiftObject.example }} {% endfor %}
Upvotes: 2