0
私はファイルイントラネットで作業しています。私が実装しようとしている最新の機能は、複数の削除システムです。私はこのフォームをレンダリングSymfony 3 - 複数の削除フォーム1つのレコードのみを削除します
public function mediaDatabaseAction(Request $request)
{
$media = $this->get('media_repository')->findAll();
$em = $this->getDoctrine()->getManager();
$form = $this->createFormBuilder()
->add('files', HiddenType::class, array('attr' => array('class' => 'file-list')))
->add('Delete', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$data = $form->getData();
foreach ($data as $record)
{
$file = $em->getRepository('MyBundle:MainMedia')->find($record);
$em->remove($file);
}
$em->flush();
$this->addFlash(
'multiple-deleted',
'Successfully deleted'
);
return $this->redirectToRoute('media_database_route');
}
return ['medias' => $media, 'deleteForm' => $form->createView()];
}
、とjQueryはコンマ鋸歯状のリストとして入力し、各ファイルのIDを追加使用して:現在、私は私のコントローラで非マッピングされたフォームをレンダリングします。 (これはチェックボックスを使って動作します)。
$("#span-delete").click(function(){
var checkedValues = $('.media-checkbox:checked').map(function() {
return this.value;
}).get();
$('.file-list').val(checkedValues);
console.log($('.file-list').val());
});
コンソールを見ると、正しくリストが表示されます。たとえば、234,235,236(これらはファイルIDです)。
コントローラでは、フォームをレンダリングし、リストをトラバースしてそれぞれを削除しようとします。しかし、それは最初のものだけを取り除くだけです。
アイデア?
ありがとうございました。
ファイルIDは一意です。あなたはリストとしてIDを提出し、そのリストを反復して、 '$ em-> getRepository(' MyBundle:MainMedia ') - > findById($ record-> id);現在のところ、リストはあなたが指しているすべての単一のデータレコードで使用されており、自動的に区切られていません。 –