Ako na Mail Message Factory (najlepsie automaticky)
- matopeto
- Člen | 395
Je v nette nieco ako Mail Message Factory, ktora by mi vratila nakonfigurovanu \Nette\Mail\Message?
V dokumentacii (https://doc.nette.org/cs/configuring#…) je nieco ako:
factories:
nette.mail:
setup:
- addHeader('X-Mailer', 'Nette Framework 2.1')
Co v nette 2.1 nefunguje. a konfiguracia nette.mail je depricated.
Viem, ze si mozem napisat vlastnu tovaren, ktora bude tieto sluzby
vytvarat.
Napr. takto:
<?php
class MessageFactory
{
protected $from = NULL;
protected $returnPath = NULL;
public function __construct($from = NULL, $returnPath = NULL)
{
$this->from = $from;
$this->returnPath = $returnPath;
}
/**
* @return \Nette\Mail\Message
*/
public function create()
{
$message = new \Nette\Mail\Message();
if ($this->from != NULL)
$message->setFrom($this->from);
if ($this->returnPath != NULL)
$message->setReturnPath($this->returnPath);
return $message;
}
}
?>
Ide to ale nejako napisat jednoduchsie pomocou generovanych tovarniciek, pripadne interface?
- David Matějka
- Moderator | 6445
pokud si udelas interface pro generovanou tovarnicku
interface MessageFactory
{
/**
* @return \Nette\Mail\Message
**/
public function create();
}
a registrujes ji spolu se setup metodama, tak ty setup metody se budou aplikovat na vytvorenou instanci Message
services:
-
implement: MessageFactory
setup:
- setFrom()
- addTo()
...
- David Matějka
- Moderator | 6445
to byla ta stara cesta, kde si byl zavisli na kontejneru, pomociktereho sis to vytvarel
$container->createMailMessage()
neslo pomoci DI predat pouze tovarnu. takhle si vyzadas IMessageFactory a nette za tebe udela implementaci