Показать форму ветки с петлей - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время я работаю в частной социальной сети для развлечения и улучшения своих навыков. В любом случае, я хочу отобразить форму, чтобы оставить комментарий к сообщению, используя цикл, но у меня есть проблемы при попытке этого. Я использую Symfony, веточку и начальную загрузку, и я хотел бы убрать js, jquery или ajax подальше.

Вот мой код:

Мой конструктор форм:

class CommentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title', null, [
                "label" => "Your title"
            ])
            ->add('content', null, [
                "label" => "Your content"
            ])
            ->add('submit', SubmitType::class, [
                "label" => "Publish your shitty comment!"
            ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Comment::class,
        ]);
    }
}

и мой взгляд:

<ul class="nav col-4 offset-3">
        {% for post in posts %}

            <li class="postItem">
                <article class="postItem">
                    <p> {{ post.title }} </p>
                    <img id="postPics" src="{{ asset('./pictures/posts/' ~ post.picture) }}">
                    {{ form(leaveCommentForm) }}
                    <h3>{{ post.title }}</h3>
                    <p>{{ post.content }}</p>
                    <author>{{ post.user.username }}</author>
                    <div class="commentPost">
                        {% for comment in post.comments %}

                            <article>
                                <h6 style="font-weight: bold">{{ comment.title }} -
                                    By
                                    <author>{{ comment.user.username }}
                                        on {{ comment.dateCreated | date('Y-M-d') }}</author>
                                </h6>
                                <p>{{ comment.content }}</p>
                            </article>
                        {% endfor %}
                    </div>
                    <input type="hidden" value="{{ post.id }}" name="postId"> {{ post.id }}
                    <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
                        Leave a comment
                    </button>
                    <!-- Modal -->
                    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
                         aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <h4 class="modal-title" id="myModalLabel">Leave a comment</h4>
                                </div>
                                <div class="modal-body">
                                    {{ form_start(leaveCommentForm) }}
                                    <input type="hidden" value="{{ post.id }}" name="postId"> {{ post.id }}
                                    {{ form_end(leaveCommentForm) }}
                                </div>
                            </div><!-- /.modal-content -->
                        </div><!-- /.modal-dialog -->
                    </div><!-- /.modal -->
                </article>
            </li>


        {% endfor %}
    </ul>

Как вы можете видеть, я хочу отображать свою форму на каждой итерации сообщения (с модальной или без нее, мне все равно, я просто пробовал некоторые вещи).

Мои проблемы здесь:

* Если я использую модал, я не могу получить свой post.id внутри моего модала и поэтому не могу отправить его своему контроллеру. На самом деле я получаю значение первого post.id для каждого сообщения.

* Если я не использую модал, я даже не вижу свою форму на своей странице.

Если у вас есть решение, которое было бы замечательно!

Заранее спасибо, ребята!

...