2 votes

Impossible d'utiliser le trait PHP dans le modèle laravel

J'ai un trait que j'utilise pour envoyer des mails en utilisant mailgun PHP sdk, j'obtiens l'erreur suivante lorsque j'essaie d'envoyer des mails :

 Trait 'App\Models\sendMailgunSdkApi' not found

Voici mon modèle de remise où j'utilise le trait dans la méthode sendDiscountMail1,

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\DiscountCode;
use App\Models\Order;
use Carbon\Carbon;
use App\Models\Scopes\Discounts;
use Mailgun\Mailgun;
use App\Traits\SendMail;

class Discount extends Model
{

    use Discounts, sendMailgunSdkApi;

      public static function sendMail1($order)
    {

        $mailData = 
        [
            'order' => $order
        ];

        $mail = $this->sendMailgunSdkApi('emails.discounts.discount-mail-1', $mailData, 'Disfruta de tu nuevo descuento en '.config('app.name').'.', 'gabogabans@gmail.com');

        return response()->json([
            'mail' => $mail,
        ]);
    }

}

Pourquoi essaie-t-il de rechercher un trait dans mon dossier de modèles ?

Mon trait, juste au cas où :

<?php
namespace App\Traits;

trait SendMail
{

    public function sendMailgunSdkApi($view, $mailData, $subject, $to)
    {
        $html = view($view, compact('mailData'))->render();

        $result = app(Mailgun::class)->messages()->send(config('mail.mailgun.domain'), [
            'from' => config('mail.from.name').' <'.config('mail.from.address').'>',
            'to' => $to,
            'subject' => $subject,
            'html' => $html,
        ]);

        return $result;
    }

}

4voto

Dilip Hirapara Points 5242

use SendMail comme un trait et ensuite appeler sendMailgunSdkApi fonction

use App\Traits\SendMail;

class Discount extends Model
{
    use Discounts,SendMail;

    public static function sendMail1($order)
    {

        $mailData = 
        [
            'order' => $order
        ];

        $mail = $this->sendMailgunSdkApi('emails.discounts.discount-mail-1', $mailData, 'Disfruta de tu nuevo descuento en '.config('app.name').'.', 'gabogabans@gmail.com');

        return response()->json([
            'mail' => $mail,
        ]);
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X