Ошибка воспроизведения демонстрации «Вы не можете определить элемент последовательности, когда в картировании»

Я получаю сообщение об ошибке при попытке воспроизвести демо, которое дает Symfony. Вы можете найти это здесь. http://symfony.com/doc/current/book/forms.html#book-form-creating-form-classes

Я могу получить форму, чтобы работать нормально, когда я включаю форму внутри контроллера, но когда я делаю форму своего собственного класса, я получаю сообщение об ошибке.

Вы не можете определить элемент последовательности при отображении 500 Internal Server Error – ParseException

Возврат журнала:

CRITICAL – Непринятый PHP Exception Symfony \ Component \ Yaml \ Exception \ ParseException: «Вы не можете определить элемент последовательности при отображении» на странице /vagrant/vendor/symfony/symfony/src/Symfony/Component/Yaml/Parser.php 81

Кажется, я не могу найти, где проблема.

Файл Task.php:

<?php namespace Acme\TaskBundle\Entity; class Task { protected $task; protected $dueDate; public function getTask() { return $this->task; } public function setTask($task) { $this->task = $task; } public function getDueDate() { return $this->dueDate; } public function setDueDate(\DateTime $dueDate = null) { $this->dueDate = $dueDate; } } 

DefaultController.php:

 <?php namespace Acme\TaskBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Acme\TaskBundle\Entity\Task; use Symfony\Component\HttpFoundation\Request; use Acme\TaskBundle\Form\Type\TaskType; class DefaultController extends Controller { public function newAction(Request $request) { // create a task and give it some dummy data for this example $task = new Task(); $form = $this->createForm(new TaskType(), $task); $form->handleRequest($request); if ($form->isValid()) { // perform some action, such as saving the task to the database return $this->redirect($this->generateUrl('task_success')); } return $this->render('AcmeTaskBundle:Default:new.html.twig', array( 'form' => $form->createView(), )); } } 

TaskType.php:

 <?php // src/Acme/TaskBundle/Form/Type/TaskType.php namespace Acme\TaskBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class TaskType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('task') ->add('dueDate', null, array('mapped' => false)) ->add('save', 'submit'); } public function getName() { return 'task'; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Acme\TaskBundle\Entity\Task', )); } } 

Позвольте мне знать, если вам нужно что-нибудь еще. Я пробовал эту настройку в нескольких файлах. Это должно быть что-то маленькое. Его сразу с сайта Symfony.


редактировать


Единственный файл YML, который у меня есть, – это файл проверки, который я использовал в своем учебнике. Файл validation.yml

 # Acme/TaskBundle/Resources/config/validation.yml Acme\TaskBundle\Entity\Task: properties: task: - NotBlank: ~ dueDate: - NotBlank: ~ - Type: \DateTime 

Может ли проблема быть в том, что у меня нет файла yml, который определяет массив?

Solutions Collecting From Web of "Ошибка воспроизведения демонстрации «Вы не можете определить элемент последовательности, когда в картировании»"

У вас есть что-то в одном из ваших файлов yml, подобных этому …

 stuff: thing1: one // mapping thing2: two // mapping thing3: three // mapping - four // sequence 

Из моей догадки, ошибка говорит о том, что вы не можете смешивать «сопоставление» yaml и «последовательность» в одном утверждении массива.

поэтому он должен быть …

 stuff: thing1: one thing2: two thing3: - four 

или

 stuff: thing1: one thing2: two thing3: three thing4: four 

в зависимости от того, какой тип массива вы пытались создать

В вашей строке изменения класса type ->add('dueDate', null, array('mapped' => false)) to ->add('dueDate', null, array())

Ваша поданная заявка действительно отображается