Как добавить класс css в кнопку удаления шаблона ветки Symfony2?

Я новичок в Symfony. Моя версия Symfony — 2.5.7. Я создал CRUD, используя «generate:doctrine:crud».

В представлении каждой записи есть кнопка удаления. Я хочу добавить класс CSS внутри кнопки.

Для этой кнопки сгенерированный код -

{{ form(delete_form) }} 

Проверкой из браузера я получил -

<button type="submit" id="form_submit" name="form[submit]">Delete</button>

Я изменил сгенерированный код ветки на -

{{ form_widget(delete_form, {'attr': {'class': 'btn btn-danger btn-lg'}}) }}

Проверкой из браузера я получил -

<div id="form" class="btn btn-danger btn-lg">
    <div>
        <button type="submit" id="form_submit" name="form[submit]">Delete</button>
    </div>
    <input type="hidden" id="form__token" name="form[_token]" value="JrBKKEdf1F8hBDYIzu0TP9a4fauKvmlPMGg3rHwwA3w">
 </div>

Итак, кнопка выглядит так, теперь -

введите здесь описание изображения

Но я хочу, как -

введите здесь описание изображения

Итак, мой сгенерированный код должен выглядеть так:

<div>
    <button type="submit" id="form_submit" name="form[submit]" class="btn btn-danger btn-lg">Delete</button>
</div>

Я пробовал, но это не работает - просто отображается обычная кнопка удаления, так как класс не включен -

{{ form_widget(delete_form.submit, { 'label': 'Delete' }, { 'attr': {'class': 'btn btn-danger btn-lg', 'type': 'button'} }) }}

Кстати, без следующей ветки кода кнопка удаления не удаляет запись --

{{ form(delete_form) }}

Как я могу сделать это с веткой ???


person Shahjalal    schedule 27.11.2014    source источник
comment
попробуйте удалить эту строку { 'label': 'Delete' }, формы form_widhet   -  person Azam Alvi    schedule 27.11.2014
comment
Пробовал, внешний вид кнопки изменился, но теперь кнопка удалить не удаляет запись... :(   -  person Shahjalal    schedule 27.11.2014


Ответы (4)


Я решил проблему.. :) но не из ветки.. с контроллера.. Я добавил класс css в метод createDeleteForm()...

private function createDeleteForm($id)
    {
        return $this->createFormBuilder()
            ->setAction($this->generateUrl('book_delete', array('id' => $id)))
            ->setMethod('DELETE')
            ->add('submit', 'submit', array('label' => 'Delete', 
                                            'attr' => array('class' => 'btn btn-danger btn-lg')))
            ->getForm()
        ;
    }

Но я думаю, что это не очень хорошая практика.. :(

person Shahjalal    schedule 27.11.2014
comment
К вашему сведению, я всегда добавляю классы и другие атрибуты в контроллер, а не в ветку. - person Veve; 27.11.2014
comment
Лучше всего хранить все вещи, связанные с интерфейсом, в twig. - person Lord Zed; 19.06.2015

Удалите { 'label': 'Delete' } и все должно работать. Вот пример:

{{ form_widget(delete_form.submit, { 'attr': {'class': 'btn btn-danger btn-lg', 'type': 'button'} }) }}
person Lord Zed    schedule 27.11.2014
comment
Для меня это лучший ответ. .submit имело значение. - person Marcos; 19.06.2015
comment
Это сработало для меня, я использовал {{ form_widget(delete_form.submit, { 'attr': {'class': 'btn btn-danger'} }) }} - person Davey Hoogland; 12.05.2016

Расширяя ответ Zed, но мне также нужна была метка на другом языке, не касаясь ничего, кроме шаблона TWIG:

   {{ form_widget(delete_form.submit, {'label': 'Usuń', 'attr': {'class': 'btn btn-danger btn-lg', 'type': 'button', 'title': 'DELETE'} }) }}    

Позже на той же странице изменена кнопка «Обновить» по умолчанию:

{{ form_widget(edit_form.submit, {'label': 'Zapisz', 'attr': {'class': 'btn btn-save  btn-lg', 'type': 'button', 'title': 'UPDATE'} }) }} 
person Marcos    schedule 19.06.2015

Все ответы здесь работают, чтобы добавить класс к кнопке отправки. Однако, если вы просто используете эту строку с delete_form.submit, форма не будет работать. Полный ответ:

{{ form_start(delete_form) }}
{{ form_widget(delete_form.submit, { 'attr': {'class': 'btn btn-danger', 'type': 'button'} }) }}
{{ form_end(delete_form) }}

Как поясняется в документе, form_widget не отображает начальный и конечный теги формы:

{# renders all fields #}
{{ form_widget(form) }}

{# renders all fields *and* the form start and end tags #}
{{ form(form) }}
person ana-lu    schedule 06.10.2015