2015-12-01 1 views
0

Я хочу петлевой Form_row В SF2/Twig:Может не петля form_row в веточке

Кодекс:

{% for post in posts %} 
      {{ form_row(formreply.body) }} 
{% endfor %} 

I Have A хронологию Как contient Многие Post Но это показать мне форму только для первого состояния на временной шкале,

UPDATE:

проблема не в сообщениях цикла ::

Другим примером:

{% for i in 0..10 %} 
    {{ form_row(formreply.body) }} 
{% endfor %} 

Он должен показать мне Form_Row десять раз, не так ли?

Он показывает это для меня только один раз ..

примечание: «Я вернулся formreply В контроллер»

+2

Вы можете только визуализировать время одно поле ... Вы говорите о вложенной форме для коллекции? http://symfony.com/doc/current/cookbook/form/form_collections.html – pbenard

ответ

1

Вы не можете Петля form_row подобное. Строка формы может отображаться только один раз. Если вы пытаетесь создать одну и ту же форму несколько раз для каждого PostReply и визуализировать их в цикле - он не будет работать снова, потому что вы получите одинаковые идентификаторы и имена полей.

Я предполагаю, что у вас есть сбор сообщений, и вы хотите показать их в стиле шкалы времени, с полем ответа, отображаемым рядом с каждым сообщением. Для этого я предлагаю создать объект PostReply и PostReplyType (тип формы). Как я сказал ранее, вам нужно использовать динамическое создание имен.

Это должно дать вам представление о том, в каком направлении вы должны идти:

class Post 
{ 
    private $id; 
    private $title; 
} 

class PostReply 
{ 
    private $id; 
    private $postId; 
    private $message; 
} 

class PostReplyType extends AbstractType 
{ 
    private $name = 'reply_form'; 

    public function setName($name){ 
     $this->name = $name; 
    } 
    // builder and other required code 
} 

Тогда вы будете в состоянии сделать что-то вроде этого в контроллере:

$posts = $postsRepository->findAll(); 
$postReplyForms = new ArrayCollection(); 

foreach($posts as $post) { 
    $postReply = new PostReply(); 
    $postReplyType = new PostReplyType(); 
    $postReplyType->setName('reply_form_' . $post->getId()); 
    $form = $this->createForm($postReplyType, $postReply); 
    $postReplyForms->add($form); 
} 

В прутик:

{% for form in postReplyForms %} 
    {{ form_start(form) }} 
    {{ form_widget(form) }} 
    {{ form_end(form) }} 
{% endfor %} 

Это должно отображать формы с динамическими идентификаторами и именами как:

<form> 
<input type="text" id="reply_form_1_field" name="reply_form_1[field]"/> 
</form> 
<form> 
<input type="text" id="reply_form_2_field" name="reply_form_2[field]"/> 
</form> 

Форматы Symfony2 являются очень сложной частью структуры, я рекомендую начать с документации, чтобы получить базовое представление о том, как работают SF2-формы. Затем googling для большего количества случаев использования. Удачи.

http://symfony.com/doc/current/book/forms.html

+0

Это то, что я хочу, спасибо Bro :) –

+0

Просто вопрос: могу ли я добавить этот attr прямо на ветку, я имею в виду вот так: { {form_widget (formreply.body, {'name': 'мое пользовательское имя'}}}} Еще раз спасибо :) –

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