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

Avatar de bestmomo
bestmomo

Salut,

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

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);
    }
}
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

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ù.

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!

Avatar de AmineK
AmineK
public function build()
{
    return $this ->text($this->tempalte);  //mail envoyé
    return $this ->markdown($this->tempalte);  //error DOMDocument
}
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"

Vous ne pouvez pas répondre à ce sujet.