Forums de la communauté francophone du CMS TYPO3: Powermail - Problème De Finisher - Forums de la communauté francophone du CMS TYPO3

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Powermail - Problème De Finisher

#1 L'utilisateur est hors-ligne   Pierro75000 

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 85
  • Inscrit(e) : 20-novembre 15

Posté 04 novembre 2016 à 17:00

Bonjour,

je suis sous Typo3 6.2.18.
J'utilise Powermail pour un formulaire de contact et je souhaite, en même temps que l'email soit envoyé, réaliser un traitement en PHP des données contenus dans le formulaire.

Pour cela, j'ai rajouté en Typoscript un finisher qui s'éxécute bien.
Voilà son code source :

<?php
namespace Vendor\Ext\Finisher;

use In2code\Powermail\Domain\Model\Mail;
use In2code\Powermail\Finisher\AbstractFinisher;


/**
 * Class DoSomethingFinisher
 *
 * @package Vendor\Ext\Finisher
 */
class DoSomethingFinisher extends AbstractFinisher
{

    /**
 	* @var Mail
 	*/
    protected $mail;

    /**
 	* @var array
 	*/
    protected $configuration;

    /**
 	* @var array
 	*/
    protected $settings;

    /**
 	* Will be called always at first
 	*
 	* @return void
 	*/
    public function initializeFinisher()
    {
    }

    /**
 	* Will be called before myFinisher()
 	*
 	* @return void
 	*/
    public function initializeMyFinisher()
    {
    }

    /**
 	* MyFinisher
 	*
 	* @return void
 	*/
    public function myFinisher()
    {

		$value = $mail->getAnswersByFieldMarker()['nom']->getValue();

		// do some more magic ...

		$to = "moi@monfournisseur.com";
		$subject = "My subject";
		$txt = "Hellooo = ".$value."";
		$headers = "From: webmaster@example.com" . "\r\n" .
		mail($to,$subject,$txt,$headers);
    }
}

?>


... J'essaie donc de récupérer la valeur du champ "nom" du formulaire ... mais ça ne marche pas.
J'ai une belle erreur PHP qui s'affiche :

Fatal error: Call to a member function getAnswersByFieldMarker() on a non-object in [pathdemonsite]/fileadmin/template/extensions/powermail/templates_suscribe/DoSomethingFinisher.php on line 57


Comment faire du coup ?
Merci d'avance pour votre aide Image IPB

Ce message a été modifié par Pierro75000 - 04 novembre 2016 à 17:01.

0

#2 L'utilisateur est hors-ligne   OlivierSC 

  • Pilier du forum
  • PipPipPipPipPipPipPip
  • Groupe : Administrateur
  • Messages : 1 689
  • Inscrit(e) : 26-juin 09

Posté 07 novembre 2016 à 09:42

Bonjour,

Je n'ai pas d'exemple de finisher sous les yeux, par contre j'ai remarqué une coquille dans ton code PHP :

Voir le messagePierro75000, le 04 novembre 2016 à 17:00, dit :

<?php
[...]
class DoSomethingFinisher extends AbstractFinisher
{

    /**
 	* @var Mail
 	*/
    protected $mail;
    [...]

    public function myFinisher()
    {

		$value = $mail->getAnswersByFieldMarker()['nom']->getValue();
		[...]
    }
}

?>


Cela ne devrait il pas être :
$this->mail->getAnswersByFieldMarker(...)

au lieu de
$mail->getAnswersByFieldMarker(...)

Qui du coup est une variable qui n'est définie nulle part et donc génère logiquement l'erreur signalée?

N'hésite pas à nous faire un retour là dessus.

OlivierSC
0

#3 L'utilisateur est hors-ligne   Pierro75000 

  • Membre
  • PipPip
  • Groupe : Membres
  • Messages : 85
  • Inscrit(e) : 20-novembre 15

Posté 07 novembre 2016 à 10:31

Bonjour Olivier Image IPB

Oups oui en effet ta remarque semble logique. Du coup en modifiant le code j'ai une autre erreur PHP :

Citation

Fatal error: Call to undefined method In2code\Powermail\Domain\Model\Mail::getAnswersByFieldMarker()


.. si je m'aventure dans classe Mail.php du powermail je n'ai effectivement pas la fonction correspondante. Voilà les méthodes que j'ai :

	Line 214: 	public function getSenderName()
	Line 225: 	public function setSenderName($senderName)
	Line 236: 	public function getSenderMail()
	Line 247: 	public function setSenderMail($senderMail)
	Line 258: 	public function getSubject()
	Line 269: 	public function setSubject($subject)
	Line 280: 	public function getReceiverMail()
	Line 291: 	public function setReceiverMail($receiverMail)
	Line 302: 	public function getBody()
	Line 313: 	public function setBody($body)
	Line 324: 	public function getFeuser()
	Line 335: 	public function setFeuser(User $feuser)
	Line 346: 	public function getSpamFactor()
	Line 357: 	public function setSpamFactor($spamFactor)
	Line 368: 	public function getTime()
	Line 379: 	public function setTime($time)
	Line 390: 	public function getSenderIp()
	Line 401: 	public function setSenderIp($senderIp)
	Line 412: 	public function getUserAgent()
	Line 423: 	public function setUserAgent($userAgent)
	Line 434: 	public function getForm()
	Line 445: 	public function setForm(Form $form)
	Line 456: 	public function getAnswers()
	Line 467: 	public function setAnswers(ObjectStorage $answers)
	Line 479: 	public function addAnswer(Answer $answer)
	Line 490: 	public function removeAnswer(Answer $answerToRemove)
	Line 500: 	public function getCrdate()
	Line 511: 	public function setCrdate($crdate)
	Line 522: 	public function getHidden()
	Line 533: 	public function setHidden($hidden)
	Line 543: 	public function setMarketingBrowserLanguage($marketingBrowserLanguage)
	Line 552: 	public function getMarketingBrowserLanguage()
	Line 561: 	public function setMarketingCountry($marketingCountry)
	Line 570: 	public function getMarketingCountry()
	Line 579: 	public function setMarketingFrontendLanguage($marketingFrontendLanguage)
	Line 588: 	public function getMarketingFrontendLanguage()
	Line 597: 	public function setMarketingMobileDevice($marketingMobileDevice)
	Line 606: 	public function getMarketingMobileDevice()
	Line 615: 	public function setMarketingPageFunnel($marketingPageFunnel)
	Line 627: 	public function getMarketingPageFunnel()
	Line 640: 	public function getMarketingPageFunnelLastPage()
	Line 655: 	public function getMarketingPageFunnelString($glue = ', ')
	Line 665: 	public function setMarketingReferer($marketingReferer)
	Line 674: 	public function getMarketingReferer()
	Line 683: 	public function setMarketingRefererDomain($marketingRefererDomain)
	Line 692: 	public function getMarketingRefererDomain()
	Line 701: 	public function setPid($pid)


Pour info, j'ai Powermail version 2.17.2 mais je ne peux pas l'upgrader. Peut-être que je pourrais rajouter la méthode manquante à la main ?

Merci d'avance pour ton aide.

EDIT 10h45 : j'ai rajouté la méthode manquante à la main. Ca marche parfaitement ;)

Meeeeerci Image IPB

Ce message a été modifié par Pierro75000 - 07 novembre 2016 à 10:44.

0

#4 L'utilisateur est hors-ligne   OlivierSC 

  • Pilier du forum
  • PipPipPipPipPipPipPip
  • Groupe : Administrateur
  • Messages : 1 689
  • Inscrit(e) : 26-juin 09

Posté 15 novembre 2016 à 16:02

Merci pour le retour d'information.

Si le sujet est résolu, tu peux le signaler dans le titre du post :)

Un Sujet Est Résolu, Alors Indiquez Le

OlivierSC
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)