Powermail 2.0 - Conditions funktionieren nicht mehr

  • 0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    30. 07. 2012, 10:15

    Hi zusammen,
    ich versuche eine Conditon für ein Pflichtfeld zu verwenden. Leider kann ich keinen Anhaltspunkt in der Doku finden, wie das jetzt gemacht werden soll.

    [globalVar = GP:tx_powermail_pi1|field|34=Sonstiges]
    # was soll hier stehen?
    plugin.tx_powermail|field|36.required = 1

    # früher ging das mal so:
    # plugin.tx_powermail_pi1.validate.uid36.required = 1
    [end]

    Hat einer eine Idee?


  • 1
  • 0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    31. 07. 2012, 16:00

    Das scheint ärgerlicher Weise nicht mehr implementiert zu sein.
    Ich habe das jetzt über signalSlotDispatcher/Tx_Powermail_Domain_Validator_CustomValidator lösen können.
    Das ist aber mit der angenehmen Lösung über TypoScript natürlich nicht vergleichbar.

  • xandio xandio
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    05. 12. 2012, 13:15

    Hallo Christian!

    Könntest Du mir bitte kurz erläutern, wie Du das gelöst hast? Insbesonders müsste ich das Required eines Feldes abhängig von einer Condition entfernen.

    Viele Grüße und danke,
    Xandi

  • 0 x
    10 Beiträge
    0 Hilfreiche Beiträge
    05. 12. 2012, 13:42

    Hab dir eben den Link zum Download der Extension per PM geschickt.

    Zu deiner Frage.
    In der ext_localconf.php muss die Controller-Klasse angegeben werden:

    1. $signalSlotDispatcher = t3lib_div::makeInstance('Tx_Extbase_SignalSlot_Dispatcher');
    2. $signalSlotDispatcher->connect('Tx_Powermail_Domain_Validator_CustomValidator', 'isValid','Tx_PowermailExt_Controller_OthersController', 'others', FALSE);

    Nun kann man in der Datei OtherController.php z.B Abhängigkeiten einfügen:

    1. class Tx_PowermailExt_Controller_OthersController extends Tx_Extbase_MVC_Controller_ActionController {
    2.  
    3. public function others($params, $obj) {
    4.  
    5. $post = t3lib_div::_GP('tx_powermail_pi1');
    6.  
    7. $others = htmlspecialchars($post['field'][$this->settings['othersCheckbox']]);
    8. $othersFreetext = htmlspecialchars($post['field'][$this->settings['othersField']]);
    9.  
    10. if( ($others == 'Sonstiges' || $others == 'others') && strlen($othersFreetext) < 1 ) {
    11. $obj->isValid = false;
    12. $obj->setError('mandatory', $this->settings['othersField']);
    13. }
    14.  
    15. }
    16.  
    17. }

    Ist sicher nicht die schönste Lösung, funktioniert aber.

  • 1