2016-08-03 13 views
0

私は今何日も悩んでいる問題があります。私の小枝で私は、チェックボックスとモーダルを明らかにのhrefを持って、のhrefsymfony 2.3パスIDをチェックボックスフォームにモーダルで渡す

私のコントローラ内のアクションへのパスが含まれている小枝

<a href="{{ path('delete_image', {'id':image.id}) }}" data-reveal-id="deleteModal" class="icon-edit" style="position:absolute;"></a> 

コントローラーでアクション

/** 
* 
* @Route("/{id}/delete", name="delete_image") 
*/ 
public function deleteAction(Request $request, CategoryImage $CategoryImage, $id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $CategoryImage = $em->getRepository('AcmeBundle:entity')->find($CategoryImage->getId()); 

      $em->remove($repo); 
      $em->flush(); 
      return $this->redirect($this->generateUrl('page_main', array("id"=>$id))); 
} 

モーダル

<div id="deleteModal" class="reveal-modal large"> 
    <h6>Delete Image</h6> 
     <br/> 
     {{form_start(DeleteImageForm, {'attr': {'id': 'DeleteImageForm'}})}} 
     Delete Image 
      {{form_widget(DeleteImageForm.remove)}} 
      {{form_errors(DeleteImageForm.remove)}}<br/><br/> 
     admin password <br/> 
      <input type="password" id="DeletePass"/> 
     <br/> 
      <button id = "Delete">Submit</button> 
     {{form_end(DeleteImageForm)}} 
    <a class="close-reveal-modal">&#215;</a> 
</div> 

のjQuery

$('#Delete').on('click', function(e){ 

    var data = $(this).serialize(); 
    if ($('#DeletePass').val() == 'password'){ 
      $("#DeleteImageForm").submit(); 
    }else{ 
      alert('invalid password'); 
      e.preventDefault(); 

     } 
    }); 

は、チェックボックスがチェックされ、それが行動に行く提出されたので、ときモーダルへのパスのID /値を渡す方法はありますか?

ご協力いただければ幸いです。

+0

パラメータをsymfonyルートにjavascriptから動的に渡したいのですか? – Jeet

+0

はい、それは私の意図ですが、私はネット上で何も見つけることができません、あるいは私はちょうどそれらを見つけることに本当に悪いです。 – Nerdicon

答えて

0

動的パラメータのプレースホルダ、つまりidを渡して、twigで削除フォームを生成します。あなたはdeleteFormを生成するコントローラでそれを行うことができます。

考えてみると、actionに一意の識別子を付けて、jQuery経由で置き換えることができます。今

return $this->createFormBuilder() 
    ->setAction($this->generateUrl('image_delete', array('id' => 'image_id'))) 
    ->setMethod('DELETE') 
    ->getForm() 
; 

、あなたのモーダルはjQueryを通じて、オープン取得するときに、あなたに必要な値にimage_idすなわちプレースホルダを置き換え、以下のように:

var currentUrl = jQuery("form#DeleteImageForm").attr('action'); 
// suppose 154 is your new image id. 
var newHref = currentUrl.replace('image_id', '154'); 
// change url of the form action. 
jQuery("form#DeleteImageForm").attr('href', newHref); 

・ホープ、このことができます。

注:コードはテストされていません。

+0

よく論理があるので、私はこの答えを受け入れます。ありがとう!ちなみに、パスを含む変数のようなものを追加する必要がありますか? – Nerdicon

+0

つまり、** var route = "{{path(etc。)}}" ** – Nerdicon

+0

ページロード時に 'form'がある場合、変数は必要なく、' action'フォームからパスを読み込むことができます。フォームが利用できない場合は、パスを生成する必要があります。 – Jeet

関連する問題