Я пытаюсь получить поле типа Date от объекта, и я сталкиваюсь со следующей ошибкой:
Исключение было сгенерировано во время рендеринга шаблона ("Предупреждение: strtr ()
ожидает, что параметр 1 будет строкой, объект указан в / var / www / feedyourmind_symfony / vendor
/symfony/src/Symfony/Component/Translation/IdentityTranslator.php строка 62 ") в
form_div_layout.html.twig в строке 37.
Я довольно новичок в Symfony2 и не могу понять, почему я получаю эту ошибку. Возможно, что-то не так с моими сущностями? Я не знаю, и я действительно хотел бы некоторую помощь, если возможно.
Хотя ошибка указывает на проблему с отображением шаблона, я чувствую, что настоящая ошибка заключается в том, что сущность и поле даты не работают должным образом.
Вот основной код в моем контроллере:
public function addQuestionAction(Request $request){
$question = new Question();
$form = $this->createForm(new QuestionType(), $question);
return $this->render('LaPorchettaWebBundle:Default:add_question.html.twig', array(
'form' => $form->createView(),
));
}
Вот вид TWIG:
{% extends "LaPorchettaWebBundle:Default:test.html.twig" %}
{% block pageTitle %}LaPorchetta Create A Question{% endblock %}
{% block content %}
<div id="outer">
<form name="petEntry" action="" method="post" enctype="multipart/form-data" >
{{ form_errors(form) }}
<div class="left">
{{ form_label(form.survey) }}
</div>
<div class="right">
{{ form_widget(form.survey) }}
{{ form_errors(form.survey) }}
</div>
<div class="left">
{{ form_label(form.section) }}
</div>
<div class="right">
{{ form_widget(form.section) }}
{{ form_errors(form.section) }}
</div>
<div class="left">
{{ form_label(form.sub_section) }}
</div>
<div class="right">
{{ form_widget(form.sub_section) }}
{{ form_errors(form.sub_section) }}
</div>
<div class="left">
{{ form_label(form.description) }}
</div>
<div class="right">
{{ form_widget(form.description) }}
{{ form_errors(form.description) }}
</div>
<div class="left">
{{ form_label(form.points) }}
</div>
<div class="right">
{{ form_widget(form.points) }}
{{ form_errors(form.points) }}
</div>
<div id="inputs">
<input type="button" id="btnCancel" name="cancel" value="Cancel"
onclick="window.location = '' " />
<input id="update" type="submit" value="submit" />
</div>
</div>
</form>
</div>
{% endblock %}
У меня есть следующие сущности:
<?php
namespace LaPorchetta\WebBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="LaPorchetta\WebBundle\Repository\SurveyRepository")
* @ORM\HasLifecycleCallbacks()
* @ORM\Table(name="Surveys")
*/
class Survey {
public function __construct() {
$this->question = new ArrayCollection();
$this->store = new ArrayCollection();
}
/**
* @ORM\Id @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
protected $id;
/**
* @ORM\Column(type="date")
*/
protected $survey_date;
/**
* @ORM\OneToMany(targetEntity="Question", mappedBy="survey")
*/
protected $question = null;
/**
* @ORM\OneToOne(targetEntity="Store", inversedBy="survey")
*/
protected $store = null;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @ORM\prePersist
*/
public function setSurveyDate()
{
$this->survey_date = new \DateTime();
}
/**
* Get survey_date
*
* @return date
*/
public function getSurveyDate()
{
return $this->survey_date;
}
/**
* Add question
*
* @param LaPorchetta\WebBundle\Entity\Question $question
*/
public function addQuestion(\LaPorchetta\WebBundle\Entity\Question $question)
{
$this->question[] = $question;
}
/**
* Get question
*
* @return Doctrine\Common\Collections\Collection
*/
public function getQuestion()
{
return $this->question;
}
/**
* Set store
*
* @param LaPorchetta\WebBundle\Entity\Store $store
*/
public function setStore(\LaPorchetta\WebBundle\Entity\Store $store)
{
$this->store = $store;
}
/**
* Get store
*
* @return LaPorchetta\WebBundle\Entity\Store
*/
public function getStore()
{
return $this->store;
}
/**
* Get action_item
*
* @return Doctrine\Common\Collections\Collection
*/
public function getActionItem()
{
return $this->action_item;
}
/**
* Set action_item
*
* @param LaPorchetta\WebBundle\Entity\Question $actionItem
*/
public function setActionItem(\LaPorchetta\WebBundle\Entity\Question $actionItem)
{
$this->action_item = $actionItem;
}
}
Тип сущности -> Вопросы
<?php
namespace LaPorchetta\WebBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="LaPorchetta\WebBundle\Repository\QuestionRepository")
* @ORM\Table(name="Questions")
*/
class Question {
/**
* @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Survey", inversedBy="question")
*/
protected $survey;
/**
* @ORM\Column(type="string")
*/
protected $section;
/**
* @ORM\Column(type="string")
*/
protected $sub_section;
/**
* @ORM\Column(type="string")
*/
protected $description;
/**
* @ORM\Column(type="integer")
*/
protected $points;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set section
*
* @param string $section
*/
public function setSection($section)
{
$this->section = $section;
}
/**
* Get section
*
* @return string
*/
public function getSection()
{
return $this->section;
}
/**
* Set sub_section
*
* @param string $subSection
*/
public function setSubSection($subSection)
{
$this->sub_section = $subSection;
}
/**
* Get sub_section
*
* @return string
*/
public function getSubSection()
{
return $this->sub_section;
}
/**
* Set description
*
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set survey
*
* @param LaPorchetta\WebBundle\Entity\Survey $survey
*/
public function setSurvey(\LaPorchetta\WebBundle\Entity\Survey $survey)
{
$this->survey = $survey;
}
/**
* Get survey
*
* @return LaPorchetta\WebBundle\Entity\Survey
*/
public function getSurvey()
{
return $this->survey;
}
/**
* Set points
*
* @param integer $points
*/
public function setPoints($points)
{
$this->points = $points;
}
/**
* Get points
*
* @return integer
*/
public function getPoints()
{
return $this->points;
}
public function __construct()
{
$this->action_item = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add action_item
*
* @param LaPorchetta\WebBundle\Entity\Survey $actionItem
*/
public function addSurvey(\LaPorchetta\WebBundle\Entity\Survey $actionItem)
{
$this->action_item[] = $actionItem;
}
/**
* Get action_item
*
* @return Doctrine\Common\Collections\Collection
*/
public function getActionItem()
{
return $this->action_item;
}
/**
* Set action_item
*
* @param LaPorchetta\WebBundle\Entity\Survey $actionItem
*/
public function setActionItem(\LaPorchetta\WebBundle\Entity\Survey $actionItem)
{
$this->action_item = $actionItem;
}
}
У меня есть следующий тип вопроса:
<?php
namespace LaPorchetta\WebBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Doctrine\ORM\EntityRepository;
class QuestionType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('survey', 'entity', array(
'class'=>'LaPorchettaWebBundle:Survey',
'property'=>'survey_date',
'multiple' => true,
'required' => true,
'query_builder' => function(EntityRepository $er) {
return
$er->createQueryBuilder('s')->orderBy('s.survey_date', 'ASC');
}))
->add('section', 'text')
->add('sub_section', 'text')
->add('description', 'text')
->add('points', 'integer');
}
public function getName()
{
return 'LaPorchetta_WebBundle_QuestionType';
}
}