2014-12-21 2 views
1

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

Что бы я хотел сделать, так это иметь возможность прокручивать поля сущности. Это делается по умолчанию в show.html.twig, но не в новых и редактируемых представлениях.

Когда я реализую ту же логику в файле new.html.twig.twig, она не работает, хотя она делает для edit.html.twig.twig.

{#app/Resources/SensioGeneratorBundle/skeleton/crud/views/new.html.twig.twig#} 

{% for field, metadata in fields %} 
    {% if field not in 'id' %} 
     {{ '{{ form_row(edit_form.' ~ field ~ ')}}' }} 
    {% endif %} 
{% endfor %} 

При работе генератора, ошибка: Переменное «поле» не существует в «сыром/просмотрах/new.html.twig.twig» в строке 9

+0

«Новый» генератор представлений (https://github.com/sensiolabs/SensioGeneratorBundle/blob/master/Generator/DoctrineCrudGenerator.php#L242-L256) не передает поля в визуализацию шаблона. Я предполагаю, что вам нужно будет написать метод renderFile, чтобы включить '' fields '=> $ this-> metadata-> fieldMappings', но, очевидно, это связано с необходимостью расширения фактического класса. – qooplmao

+0

И ты уже справился с этим. Пу. – qooplmao

+0

Да. Спасибо за ваш ответ. Написание ваших проблем иногда помогает найти правильное направление. – curuba

ответ

1

Ок, на самом деле это проблема в Sensio Generator Bundle. В файле: sensio \ generator-bundle \ Sensio \ Bundle \ GeneratorBundle \ Generator \ DoctrineCrudGenerator.php функция generateNewView отсутствует параметр. Он не передает поля, а не generateShowView.

Вот сравнение:

protected function generateNewView($dir) 
{ 
    $this->renderFile('crud/views/new.html.twig.twig', $dir.'/new.html.twig', array(
     'bundle'   => $this->bundle->getName(), 
     'entity'   => $this->entity, 
     'route_prefix'  => $this->routePrefix, 
     'route_name_prefix' => $this->routeNamePrefix, 
     'actions'   => $this->actions, 
    )); 
} 

против

protected function generateShowView($dir) 
{ 
    $this->renderFile('crud/views/show.html.twig.twig', $dir.'/show.html.twig', array(
     'bundle'   => $this->bundle->getName(), 
     'entity'   => $this->entity, 
     'fields'   => $this->metadata->fieldMappings, 
     'actions'   => $this->actions, 
     'route_prefix'  => $this->routePrefix, 
     'route_name_prefix' => $this->routeNamePrefix, 
    )); 
} 

Я постараюсь опубликовать это как улучшение.

+0

Опубликовано здесь: [gitHub] (https://github.com/sensiolabs/SensioGeneratorBundle/issues/325) – curuba

+0

Проблема исправлена: https://github.com/sensiolabs/SensioGeneratorBundle/pull/401 – curuba

Смежные вопросы