2017-05-30 7 views
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です)。

コントローラでは、フォームをレンダリングし、リストをトラバースしてそれぞれを削除しようとします。しかし、それは最初のものだけを取り除くだけです。

アイデア?

ありがとうございました。

+1

ファイルIDは一意です。あなたはリストとしてIDを提出し、そのリストを反復して、 '$ em-> getRepository(' MyBundle:MainMedia ') - > findById($ record-> id);現在のところ、リストはあなたが指しているすべての単一のデータレコードで使用されており、自動的に区切られていません。 –

答えて

0

私は少し混乱して、次の結論に至りました。

foreach($data as $record) //loop over values 
    { 
     $myArray = explode(',', $record); 
     print_r($myArray); 

     foreach($myArray as $value) //loop over values 
     { 
      $file = $em->getRepository('MyBundle:MainMedia')->find($value); 
      $em->remove($file); 
     } 
    } 

私はリストではなく文字列をループしていることに気付きました。 explodeを使って、私はこの文字列を配列に変換してループさせることができました。

これが役に立ちます。

関連する問題