2013-02-26 7 views
0

У меня есть файл, называемый индексом, который показывает список запросов клиентов. Я хочу добавить несколько удалений в это.symfony2 multidelte records delete

Код моего индексного файла ниже.

{% block body -%} 
<h1>Enquiry list</h1> 


<table class="records_list" id="rounded-corner"> 
    <thead> 
     <tr> 
    <th>Option</th> 
    <th>Id</th> 
      <th>Name</th> 
      <th>Email</th> 
      <th>Subject</th> 
      <th>Body</th> 
      <th>Actions</th> 
     </tr> 
    </thead> 
    <tbody> 
    {% for entity in entities %} 
     <tr> 
    <td><input type="checkbox" name="multiSelect" id="multiSelect[]" value="{{ entity.id }}"></td> 
      <td><a href="{{ path('enquiry_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td> 
      <td>{{ entity.name }}</td> 
      <td>{{ entity.email }}</td> 
      <td>{{ entity.subject }}</td> 
      <td>{{ entity.body }}</td> 
      <td> 

        <a href="{{ path('enquiry_show', { 'id': entity.id }) }}" title="View"><img src="http://test//bundles/blogger/image/view.png" style="width:30px; height:30px"></a> 

        <a href="{{ path('enquiry_edit', { 'id': entity.id }) }}" title="Edit"> <img src="http://test//bundles/blogger/image/edit.png" style="width:30px; height:30px" > </a> 

      </td> 
     </tr> 
    {% endfor %} 
    </tbody> 
    <tfooter> 

    </tfooter> 
</table> 

    <ul> 
    <li> 
     <a href="{{ path('enquiry_new') }}"> 
      Create a new entry 
     </a> 
    </li> 
</ul> 
{% endblock %} 

Я установил флажок внутри него. и то, что я хочу, является значением массива «multiSelect []», в котором хранится весь идентификатор. и я передаю это моему контроллеру. Я не знаю, как передать это значение массива в качестве аргумента контроллера. поэтому, пожалуйста, помогите мне Я хочу передать его здесь.

<tfooter> 

     <a href="{{ path('enquiry_edit', " ") }}">MultiDelete</a> 

</tfooter>  

ответ

0

У меня есть ответ. Я создал форму и передал запрос контроллеру deleteAction.

в методе DeleteAction

я получить параметры запроса, используя $ request-> Get ('Множественный'); «multiSelect» - название поля ввода.

и с помощью объекта repositoryclass я выполнил задачу.

Спасибо за ваш ответ.

0

Для этого вам необходимо использовать form. Использование полей ввода без формы всегда небрежно.

+0

я есть использование поля формы тоже дают мне значение в контексте запроса, но я не знаю, как разобрать его. –

+0

Вот для чего нужны формы. Все значения из формы будут отправлены на URL-адрес действия формы. Или как POST или GET. Вы решили это через атрибут action тега формы. Plese прочитал документацию форм в symfony2, которую я связал выше. Это довольно просто. –

0

Я думаю, что самый безопасный способ сделать это - это ссылка, в которой onclick генерирует форму и отправляет ее по почте. Например:

<a href="{{ path('your_delete_action', { 'id': object.id }) }}" 
    token="{{ token }}" 
    data-method="POST" 
    object-id ="{{ object.id }}"> 
    <span class="red"><i class="icon-remove"></i></span> 
</a> 

И OnClick на этой ссылки вы создаете форму и отправить его в DeleteAction

// Every link with an attribute data-method 
$("#container").on("click", "a[data-method]", function(event){ 
    event.preventDefault(); 

    var target = $(event.currentTarget); 
    var method = target.attr('data-method'); 
    var action = target.attr('href'); 
    var token = target.attr('token'); 
    var objectId = target.attr('object-id'); 

    // Create a form on click 
    var formulario = $('<form/>', { 
     style: 'display:none;', 
     method: method, 
     action: action 
    }); 

    formulario.appendTo(target); 

    formulario.append("<input name='token' value='" + token + "' type='hidden'/>"); 
    formulario.append("<input name='id' value='" + objectId + "' type='hidden'/>"); 

    // Do submit 
    formulario.submit(); 

});