Laravel 5

Laravel Commands (In CssToInlineStyles.php line 111: Class 'DOMDocument' not found)

Avatar de AmineK
AmineK

Bonjour :) j'ai créé une commande dans lravel 5.8:

class Mycmd extends Command
{
...

et dans la fonction handle(), j'ai essayé d'envoyer un mail de notification pour mon client:

$template='emails.notification';
$subject = 'notification client';
$myMail= new MyMail($datas,$subject,$template);	
Mail::to($_user->email)->send($myMail);

j'obtiens l'erreur suivante: In CssToInlineStyles.php line 111: Class 'DOMDocument' not found

Merci d'avance :D

Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Salut,

Je pense que ton souci se situe dans la classe MyMail.

Posté il y a 5 mois
Avatar de AmineK
AmineK

Bonsoir, Merci pour votre retour, Veuillez trouver mon code:

<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class MyMail extends Mailable
{
    use Queueable, SerializesModels;
    public $datas;
    public $subject;
    public $tempalte;

    public function __construct($datas, $subject, $tempalte)
    {
        $this->datas = $datas;
        $this->subject = $subject;
        $this->tempalte = $tempalte;
    }

    public function build()
    {		
        return $this->from(env('EMAIL_FROM'))
            ->subject($this->subject)
            ->markdown($this->tempalte);
    }
}
Posté il y a 5 mois
Avatar de AmineK
AmineK

J'ai essayé l'instruction suivante: dd(class_exists('DOMDocument')); 1/dans un controlleur ->retour true 2/dans mon class Mycmd ->retour false

Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Ce qui est curieux c'est que c'est une classe de base de PHP que tu devrais pouvoir atteindre de n'importe où.

Posté il y a 5 mois
Avatar de AmineK
AmineK

oui c'est ça le problème :( , Est ce que c'est normal!? je peux l'atteindre via un controlleur et pas dans ma classe qui hérite de mailable!

Posté il y a 5 mois
Avatar de AmineK
AmineK
public function build()
{
    return $this ->text($this->tempalte);  //mail envoyé
    return $this ->markdown($this->tempalte);  //error DOMDocument
}
Posté il y a 5 mois
Avatar de AmineK
AmineK

Une solution peut être utilisée :)

utilisez $this->view insted of $this->markdown

/! \ le seul problème: les styles ne seront pas pris en compte si vous les insérez entre ou appelez un fichier css dans votre blade

-> Pour contourner le problème de style, vous devez les appliquer avec l'attribut style = "..." dans chaque balise html souhaitée

=> A valider: la source de problème de "DomDocument not found!" est lié vraiment à l'interprétation de fichier blade qui ne doit pas contenir les caractères '{' et '}' car il va impacter le format json retourné par les classes de type "Command"

Posté il y a 5 mois

Vous ne pouvez pas répondre à ce sujet.