2015-01-18 8 views
2

Я уже несколько часов ломаю голову, пытаясь найти способ добиться этого: как я могу переопределить форму удаления Symfony2?Переопределение Symfony2 delete form

Когда я называю удаления формы в моем Twig так:

{{ form(delete_form }} 

Это фактически делает:

<form name="form" method="post" action="..."> 
    <input type="hidden" name="_method" value="DELETE"> 
    <div id="form"> 
     <div> 
      <button type="submit" id="form_submit" name="form[submit]"> 
       Delete 
      </button> 
     </div> 
     <input type="hidden" id="form__token" name="form[_token]" value="..."> 
    </div> 
</form> 

Ok. Я могу изменить контекст «Удалить» с помощью моего контроллера Entity и добавить несколько классов. Хорошо.

<form name="form" method="post" action="..."> 
    <input type="hidden" name="_method" value="DELETE"> 
    <div id="form"> 
     <div> 
      <button type="submit" id="form_submit" name="form[submit]"> 
       <i class="fa fa-trash"></i> 
      </button> 
     </div> 
     <input type="hidden" id="form__token" name="form[_token]" value="..."> 
    </div> 
</form> 

Теперь я хочу, чтобы добавить HTML вместо удаления, давайте для экземпляра Font Awesome trash icon. Как я могу это сделать? Фактический HTML будет таким образом:

Я читал Symfony2 cookbook, но я все еще не могу найти способ сделать это. У кого-нибудь есть идея?

ответ

4

попробуйте это в вашем шаблоне Twig и не добавляйте кнопку отправки через формообразователь!

{{ form_start(delete_form) }} 
<button type="submit" class="btn btn-danger btn-xs"> 
    <i class="fa fa-trash"></i> 
</button> 
{{ form_end(delete_form) }} 
+0

Собственно, это почти работает. Теперь у меня есть желаемая кнопка с иконкой корзины. Тем не менее, кнопка удаления (то есть с текстом «Удалить») все еще здесь. Поэтому у меня есть две кнопки вместо одной! –

+0

Просто удалите поле отправки из класса, где вы определяете эту форму. Это поле должно выглядеть как $ builder-> add ('delete,' submit ', array()) –

+0

Неправильная практика удаления кнопок отправки из построителя форм, особенно если у вас несколько кнопок отправки, которые действуют по-разному. Например, вы не можете использовать '$ form-> get ('button_name') -> isClicked();' из вашего контроллера. Возможно, вы захотите [переписать свою тему формы] (http://symfony.com/doc/current/cookbook/form/form_customization.html). –