Utilisation de Zend-Translate dans une classe autre que le controller
Bonjour, j'ai défini mon objet translate dans mon controller de cette manière :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $translate = new Zend_Translate('gettext',$basePath.'application/languages/',$code_language );
$translate->setLocale($langLocale);
$frontendOptions = array('lifetime' => 3600, // temps de vie du cache
'automatic_serialization' => true);
$backendOptions = array('cache_dir' => '/tmp/');
// créer un objet Zend_Cache_Core
$cache = Zend_Cache::factory('Core',
'File',
$frontendOptions,
$backendOptions);
$translate->setCache($cache);
Zend_Registry::set('Zend_Translate', $translate);
Zend_Validate_Abstract::setDefaultTranslator($translate);
Zend_Form::setDefaultTranslator($translate); |
Pour l'appeller à partir du controller je fais comme ceci :
Code:
$this->view->translate('La phrase que je veux traduire');
à partir d'une vue :
Code:
echo $this->translate('La phrase que je veux traduire');
Mais j'ai une classe EMail et je voudrais traduire une phrase qui répéte du genre «*cordialement*» à la fin du mail.,
J'ai essayé de transmettre l'objet $translate à la classe Email en instanciant dans le controller :
Code:
1 2
| $e=new Email($translate);
$e->simple($email_client, $email_client, 'Vos identifiants', $txt); |
j'obtiens le message d'erreur suivant :
Fatal error: Call to undefined method EMail::translate() in … application/models/EMail.php on line 39
Ma classe Email :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| class EMail
{
private $config = array(...);
private $serveur_envoi = '...';
private $noreply = '...';
private $translate;
private $locale;
function __construct()
{
$num=func_num_args();
switch($num)
{
case 0:
$this->translate=new Zend_View_Helper_Translate();
break;
case 1:
$translate=func_get_arg(0);
$this->translate=$translate;
break;
default:
}
}
function simple($email_dest,$lib_dest,$sujet,$message )
{
$mail = new Zend_Mail();
$message=$message.'<br><br>'.$this->translate('Cordialement').'.'; //
$mail->setBodyHtml($message);
$mail->setFrom($this->noreply, 'noreply');
$mail->addTo($email_dest, $lib_dest);
$mail->setSubject($sujet);
$transport = new Zend_Mail_Transport_Smtp($this->serveur_envoi, $this->config);
try {
$mail->send($transport);
}
catch (Exception $e) {echo('Pb dans l\'envoi du mail à '.$email_dest);}
} |
J'ai créé un constructeur qui prend en compte s'il y a un argument ou pas.
Peut-être faudrait-il faire ça avec les helpers ?
Merci pour votre aide.