arturweb01
@arturweb01

Как найти контроллер формы в symfony?

Я так понимаю тут создается форма в модальном окне с шаблоном "booking-form", но никак не могу отыскать ее контроллер.
<div id="online_buy" class="modals-order" data-id="0" data-car="" style="display: none">
            {{ render(controller('WartFeedbackBundle:Front/FormGenerator:generateForm', {"formType": "booking", "formName": "Заявка на аренду", button: "Отправить заявку", template:'booking-form', "parameters" : { "page" : url } } )) }}
        </div>


Содержимое booking-form.html.twig:
{{ form_start(form) }}
<div class="modal-main">
    <div class="content">
        <div class="title">
            ОНЛАЙН-ЗАКАЗ АВТО
        </div>

        <div class="information">
            <div class="information-title">
                ОБЩАЯ ИНФОРМАЦИЯ ЗАКАЗА
            </div>
            <div class="information-form">
                <div class="row-top">
                    <div class="title">ДАТА ПРОКАТА</div>
                    {{ form_widget(form.indate,  {attr: { 'placeholder': ''}}) }}
                    <label for="feedback_form_indate"></label>
                    <span>-</span>
                    {{ form_widget(form.outdate,  {attr: { 'class': 'js-datepicker', 'placeholder': ''}}) }}
                    <label for="feedback_form_outdate"></label>
                </div>
                <div class="row-bottom">
                    <div class="col-left">
                        {{ form_row(form.takeauto, { 'label': 'Место выдачи авто'}) }}
                    </div>
                    <div class="col-right">
                        {{ form_row(form.returnauto, { 'label': 'Место возврата авто'}) }}
                    </div>
                </div>
            </div>
        </div>

        <div class="addedService">
            <div class="addedService-title">
                ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ
            </div>
            <div class="addedService-list">
                {% for tag in form.additional %}
                    <div class="addedService-item">
                        {{ form_widget(tag) }}
                    </div>
                {% endfor %}
            </div>
        </div>
        <div class="docs">
            <div class="docs-title">
                КОПИИ ДОКУМЕНТОВ
            </div>
            <div class="docs-description">
                    Для бронирования автомобиля необходимо согласование с нашей службой безопасности. Здесь вы можете прикрепить копии требуемых
                    документов или выслать их нам по E-Mail.
            </div>
            <div class="docs-row">

                <div class="docs-item">
                    <div class="docs-item__name">
                        Паспорт РФ
                    </div>
                    <div class="docs-item__text">
                        страницы с фотографией, пропиской, сведениях о ранее выданных паспортах
                    </div>
                    {{ form_widget(form.passport) }}

                </div>
                <div class="docs-item">
                    <div class="docs-item__name">
                        Водительское удостоверение
                    </div>
                    <div class="docs-item__text"></div>
                    {{ form_widget(form.drivelicence) }}

                </div>
                <div class="docs-item">
                    <div class="docs-item__name">
                        Третий документ, подтверждающий личность
                    </div>
                    <div class="docs-item__text">
                        СНИЛС, ИНН, заграничный паспорт, военный билет и т.д.
                    </div>
                    {{ form_widget(form.thirddocument) }}
                </div>
        </div>

        <div class="contactForm">
            <div class="contactForm-title">
                КОНТАКТНАЯ ИНФОРМАЦИЯ
            </div>
            <div class="contactForm-form">
                {{ form_widget(form.name,  {attr: { 'placeholder': 'ФИО'}}) }}
                {{ form_widget(form.phone,  {attr: { 'placeholder': '+7(___)___-__-__', 'minlength' : '11', 'pattern' : '[\+]?(7|8)[\\d]{10}'}}) }}
                {{ form_widget(form.email,  {attr: { 'placeholder': 'E-mail', 'pattern':'[a-zA-Z0-9(.-_)]+@+[a-z]+\\.+[a-z]{2,4}'}}) }}
                <label for="description">
                    ПРИМЕЧАНИЕ К ЗАКАЗУ
                </label>
                {{ form_widget(form.coment) }}
            </div>
        </div>
		
		<div style="padding-bottom:70px;" class="g-recaptcha" data-sitekey="6Lf5d74ZAAAAAB2PRFmp4BQg7-zaI2j3QxyizIss"></div>

</div>
</div>
</div>
<div class="order-footer">
    <a href="#" class="contactForm-btn btn">
        {{ form_widget(form.submit,  {"label" : button }) }}
    </a>
</div>

{{ form_end(form) }}


ГДЕ КОНТРОЛЛЕР ЭТОЙ ФОРМЫ??
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Данный контроллер, указанный в шаблоне отрисовывает (создает) форму по пути bundle:controller:action, а вот обрабатывает другой/другие. Вообще текущий шаблон вызывается искомым контроллером или несколькими.

Ищем контроллер по обработке формы:

1a. Или открываете гугл-консоль вкладку Network -> XHR и при отправке формы смотрите — на какой роут идет отправка
1b. Или открываете дебаг-консоль Symfony и при отправке формы смотрите — на какой роут идет отправка

2. Ищите роут: bin/consol debug:route <route>, где <route> — путь от path, можно через grep искать: bin/console d:r | grep <route_part>

Команда выдаст вам примерно такую инфу:
$ bin/console d:r home

+--------------+----------------------------------------------------------------+
| Property     | Value                                                          |
+--------------+----------------------------------------------------------------+
| Route Name   | home                                                           |
| Path         | /{_locale}                                                     |
| Path Regex   | {^/(?P<_locale>en|ru)?$}sDu                                    |
| Requirements | _locale: en|ru                                                 |
| Class        | Symfony\Component\Routing\Route                                |
| Defaults     | _controller: \App\Controller\HomeController::index() |
|              | _locale: en                                                    |
| Options      | compiler_class: Symfony\Component\Routing\RouteCompiler        |
|              | utf8: true                                                     |
+--------------+----------------------------------------------------------------+


но там могут быть переменные (id например или слаг), нужно без них... в любом случае путь найдете по команде bin/consol debug:route название вашего роута (справа пути с выражениями, слева названия роута — его и подставить в первую команду нужно):
users.show           ANY      ANY      ANY    /admin/users/{id}                                 
app_login            ANY      ANY      ANY    /login                                            
app_logout           GET      ANY      ANY    /logout                                                               
oauth.fake           ANY      ANY      ANY    /fake_login                                           
auth.signup          ANY      ANY      ANY    /signup


3. Там где-то есть обработка формы, находите что-то типа if ($form->isSubmitted() && $form->isValid()) и уже внедряете свою капчу
4. PROFIT!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы