2016-11-21 3 views
0

EDIT: Я внесла некоторые изменения в свой вопрос, потому что у меня было ощущение, что я не дал понять, что я пытаюсь сделать - надеюсь, что он делает больше смысл сейчас.Добавить динамический параметр в <f: link.action>

У меня есть список назначений, которые сгруппированы по их дате, а затем их адвокатом.

Моя цель: мне нужна кнопка удалить рядом с каждым адвокатом, который удаляет все назначения адвоката на определенную дату и посылает по электронной почте к адвокату после показа диалога, в котором пользователь может вставить дополнительный info-msg.

Все, кроме полужирный часть уже работает.

При нажатии кнопки Я создаю диалог с jQuery.
enter image description here
Как мне получить информацию о встречах (Адвокат и День) в диалоговом окне?

Я попытался работать с формой в своем диалоговом окне, это кажется прекрасным, но я до сих пор не знаю, как вставить имя и дату адвоката там, а встречи больше не передаются контроллеру, только необязательный msg ,

Вот моя попытка после первой обратной связи вы, ребята (не работает - назначения не приходит через к контроллеру, и я до сих пор не знаю, как сделать имя Clicked адвоката и дата назначений появятся):

<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> 

Затем вы можете изменить его action аргумент с jQuery и представить его. Поскольку 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: Вы можете использовать собственные JS, чтобы получить HREF в ссылку вместо JQuery, что должно привести к более высокой производительности:

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

К сожалению, встречи не проходят, как кажется, но спасибо за подсказки - я узнал что-то из вашего ответа - Я редактировал свой вопрос, используя ваш код. –

+0

, когда форма отправлена, вы должны увидеть URL-адрес, если вы не перенаправляете действие удаления. Имеются ли там параметры, а также в сгенерированных ссылках? –

+0

О, это из-за моего перенаправления, что я не видел параметров, теперь я вижу это - я, вероятно, завтра буду работать, потому что уже слишком поздно, а потом я помету ваш ответ как принятый, спасибо! –

2

Если вы хотите изменить или удалить объекты, вы должны использовать HTTP-POST вместо GET. Поэтому вы можете иметь небольшую форму и отправить текстовое поле. Не забудьте указать ваше поле в качестве аргумента в вашем действии «deleteMultiple».

Чтобы заполнить свое текстовое поле, вы можете использовать атрибут value в режиме просмотра текстового поля. (https://fluidtypo3.org/viewhelpers/fluid/master/Form/TextareaViewHelper.html)

+0

Я не понимаю, как я должен решить мою проблему с вашим решением. Вы имеете в виду, что я должен поместить форму внутри моего div, которую я выводил в диалоговом окне jQuery? Затем, как мне передать назначения, которые я хочу удалить в нем? Где я использую GET здесь? Я знаю, как заполнять текстовые поля, но для моей дополнительной информации я не хочу ее заполнять, я хочу заполнить ее в реальном времени в своем диалоговом окне. –

+0

Вы можете добавить свои аргументы, как обычно, '' '' '' в вашей конфигурации для кнопки диалога, которую вы просто отправляете в эту форму. –

+0

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