2016-11-21 5 views
0

EDIT:私は私が何をしようとしているかを明確にしていないと感じていたので、私の質問にいくつか変更を加えました。今感覚。動的パラメータを<f:link.action>に追加します。

私は日付でグループ化されたアポイントのリストを持っています。

私の目標: 私は、ユーザーがオプションを挿入できるダイアログを表示した後、特定の日に弁護士のすべての予定を削除し、弁護士に電子メールを送信する各弁護士の隣の削除ボタンを必要としますinfo-msg

太字の部分を除くすべてが既に動作しています。

クリックすると、jQueryでダイアログを作成します。
enter image description here
ダイアログで予定の情報(弁護士とデイ)を取得するにはどうすればよいですか?

ダイアログでフォームを使用しようとしましたが、うまく見えますが、弁護士の名前と日付を挿入する方法がわからず、予定がコントローラにもう渡されず、オプションのmsg 。ここで

は(動作しない - 予定はコントローラに至るまで来ていないと私はまだクリックされた弁護士の名前を作成する方法がわからないと予定日付が表示されます)君たちの第1の帰還後の私の試みです:

<sp:groupedForDateTime each="{paginatedAppointments}" 
         as="appointmentsByDay" 
         groupBy="startDate" 
         format="d.m.Y" 
         groupKey="startDate"> 
Termine am {startDate->f:format.date(format:'d.m.Y')} 
<f:groupedFor each="{appointmentsByDay}" 
       as="appointmentsByLawyer" 
       groupBy="lawyer.fullName" 
       groupKey="lawyerName"> 
    <f:link.action class="lcapp-delete-link" action="deleteMultiple" arguments="{appointments: appointmentsByLawyer}"> 
    Termine löschen 
    </f:link.action> 
</f:groupedFor> 
</sp:groupedForDateTime> 

//How do I get information into the div after clicking on a "lcapp-delete-link"? 
<div style="display:hidden"> 
<div id="lcapp-dialog-delete-msg" class="lcapp-dialog-delete-msg"> 
<f:form action="deleteMultiple" method="post" id="messageForm"> 
    //<h2>Termine für !!(Lawyer clicked:){lawyer.fullName}!! am !!(Corresponding date:){startDate->f:format.date(format:'d.m.Y')}!! löschen</h2> 
    <p>Begründung (optional)</p> 
    <f:form.textarea id="msg" name="msg"/> 
</f:form> 
</div> 
</div> 

<script> 
$(document).ready(function (r) { 
    $('.lcapp-delete-link').click(function (ev) { 
    ev.preventDefault(); 
    ev.stopPropagation(); 
    var goto = this.href; 

    $('.lcapp-dialog-delete-msg').dialog({ 
     resizable: false, 
     height: 500, 
     width: 430, 
     modal: true, 
     buttons: { 
      'Löschen und Benachrichtigen': function() { 
       $('#messageForm').attr('action', goto).submit(); 
      }, 
      'Abbrechen': function() { 
       $(this).dialog("close"); 
       $(this).dialog("destroy"); 
      } 
     } 
    }); 
    }); 
}); 
</script> 

答えて

1

適切なextbaseフォームを<f:form action="">とメッセージフィールドの内側に作成する必要があります。

<div id="lcapp-dialog-delete-msg" class="lcapp-dialog-delete-msg"> 
    <f:form action="deleteMultiple" method="post" id="messageForm"> 
    <h2>Termine für am löschen</h2> 
    <p> 
     Begründung (optional) 
    </p> 
    <f:form.textarea id="msg" name="msg"/> 
    </f:form> 
</div> 

その後、jQueryとのaction引数を変更し、それを提出することができます。あなたの削除リンクのURLは適切なcHashで構築されているので、フォームを送信する際に問題はありません。

$('.lcapp-delete-link').click(function (ev) { 
    ev.preventDefault(); 
    ev.stopPropagation(); 

    var clicked = $(this); 
    var goto = clicked.attr('href'); 
    $('.lcapp-dialog-delete-msg').dialog({ 
     resizable: false, 
     height: 500, 
     width: 430, 
     modal: true, 
     buttons: { 
      'Löschen und Benachrichtigen': function() { 
       $('#messageForm').attr('action', goto).submit(); 
      }, 
      'Abbrechen': function() { 
       $(this).dialog("close"); 
       $(this).dialog("destroy"); 
      } 
     } 
    }); 
}); 

PS:あなたはより良いパフォーマンスにつながるはず何の代わりにjQueryのリンクのhrefを取得するためにネイティブJSを使用することができます。

// instead of 
var goto = clicked.attr('href'); 
// you can use 
var goto = this.href; 
+0

残念なことに、予定はもう見えなくなっていますが、ヒントのおかげで、私はあなたの答えから何かを学びました。 あなたのコードを使用して私の質問を編集しました。 –

+0

フォームが送信されると、削除アクションからリダイレクトしないとURLが表示されます。生成されたリンクだけでなく、生成されたリンクにもパラメータが存在しますか? –

+0

ああ、それは私のリダイレクトのために私はパラメータを見ていなかったので、私はそれを見ることができます - 私はおそらく明日働くことになります、それは遅すぎるので、 –

2

オブジェクトを変更または削除する場合は、GETの代わりにHTTP-POSTを使用する必要があります。したがって、小さなフォームを作成してテキストエリアを送信することができます。あなたのフィールドを "deleteMultiple"アクションの引数として言及することを忘れないでください。

テキストフィールドを事前入力するには、テキストフィールドビューヘルパーのvalue属性を使用します。 (https://fluidtypo3.org/viewhelpers/fluid/master/Form/TextareaViewHelper.html

+0

私は私が私の問題を解決するためになってるか理解していませんあなたのソリューションで。 jQueryのダイアログで出力しているdivの内部にフォームを置く必要があるのですか?それから、削除したい予定をどのように渡しますか? ここでGETはどこですか? テキストフィールドをプレフィックスする方法は知っていますが、私のオプションの情報についてはプレフィルをしたくないので、私はダイアログボックスに実際に埋めたいと思っています。 –

+0

このフォームを単純に送信するダイアログボタンの設定では、いつもの '' '' 'のように引数を追加できます。 –

+0

私は弁護士のグループごとにフォームを作成したくない - それはあまりにも多くなるだろう - 実行時に削除したい弁護士のグループを渡したい。 –

関連する問題