ارور Mailable class does not exist

پرسیده شده
فعالیت 1446 روز پیش
دیده شده 1002 بار
0

دوستان من طبق فیلم رفتم جلو ولی این ارور رو میده که خودمون تعیین کردیم

Mailable class does not exist

کد فایل EmailType

<?php
namespace App\Service\Notifaction\constants;

use App\Mail\ForgetPassword;
use App\Mail\TopicCreated;
use App\Mail\UserRegistered;
use App\User;

class EmailType{
    const USER_REGISTERED = 1;
    const TOPIC_CREATED = 2;
    const FORGET_PASSWORD = 3;

        public static function toString(){
            return [
                self::USER_REGISTERED => 'ثبت نام کاربر',
                self::TOPIC_CREATED => 'ایجاد مقاله جدید',
                self::FORGET_PASSWORD => 'فراموشی رمز عبور',
            ];
        }

        public static function toMail($type)
        {
          try {
            return [
                self::USER_REGISTERED => UserRegistered::class,
                self::TOPIC_CREATED => TopicCreated::class,
                self::FORGET_PASSWORD => ForgetPassword::class
        ][$type];
          } catch (\Throwable $th) {
                throw new \InvalidArgumentException('Mailable class does not exist');

          }


        }
}

کد NotifactionController

<?php

namespace App\Http\Controllers;

use App\Service\Notifaction\constants\EmailType;
use App\Service\Notifaction\Notifaction;
use App\User;
use Illuminate\Http\Request;

class NotifactionController extends Controller
{
    public function email(){
        $users = User::all();
        $emailType = EmailType::toString();
        return view('notifaction.send-email' , compact('users' , 'emailType'));
    }

    public function sendEmail(Request $request){

            $request->validate([
                    'user' => 'integer | exists:users,id',
                    'email_type' => 'integer'
            ]);
            $notifaction = resolve(Notifaction::class);
                $maillable = EmailType::toMail($request->email_type);
                $notifaction->sendEmail(User::find($request->user) , new $maillable);

            }

}

 

فایل پیوست

0
حذف شده

سلام

مقدار email_type رو ببین چی بت میرسونه توی request یه چک بکن 

فایل پیوست

Steven R McQueen

توسط

Steven R McQueen

21 اردیبهشت 99

حذف شده
منظورت اینه dd کنم؟
حذف شده
بله dd یا var_dump فقط ببینید که مقداری که میرسه درست باشه
Steven R McQueen

21 اردیبهشت 99

حذف شده
null برمیگردونه
حذف شده
خوب مشکل همینجاس کدتون رو چک کنید دلیلش رو پیدا کنید توی blade
Steven R McQueen

21 اردیبهشت 99

0
حذف شده

توی فایل blade به این صورت باید باشه 

    <div class="form-group">
                    <div class="col-ms-12">
                        <label for="email_type">@lang('notification.email_type')</label>
                        <select class="form-control" name="email_type">
                            @foreach($emailType as $key => $type)
                                <option value="{{$key}}">{{$type}}</option>
                            @endforeach
                        </select>
                    </div>
                </div>

همچنین بهتره وقتی با compact دارید چند متغیر ارسال میکنید به صورت ارایه باشه 

 return view('notifaction.send-email' , compact(['users' , 'emailType']));

 

فایل پیوست

Steven R McQueen

توسط

Steven R McQueen

21 اردیبهشت 99

0
حذف شده

من هرچی گشتم مشکلی پیدا نکردم

فایل blade

@extends('layouts.layout')

@section('title' , 'خانه')

@section('content')
        <div class="card">
            <div class="card-header">
                        @lang('not.send_email')
            </div>
            <div class="card-body">
                <form action="{{route('notifaction.send.email')}}" method="POST">
                   @csrf
                    <div class="form-group">
                        <label for="users">کاربر ها</label>
                        <select name="users" id="users" class="form-control">
                                @foreach($users as $user)
                            <option value="{{$user->id}}">{{$user->name}}</option>
                            @endforeach
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="email">ایمیل ها</label>
                        <select name="email" id="email" class="form-control">
                            @foreach($emailTypes as $key => $type)
                            <option value="{{$key}}">{{$type}}</option>
                            @endforeach
                        </select>
                    </div>
                    @if($errors->any())
                    <ul>
                        @foreach($errors->all() as $error)
                                     <div class="small mb-2">
                            <li class="text-danager">{{$error}}</li>
                        </div>
                @endforeach
                    </ul>
                    @endif
                    <button name="send" class="btn btn-success">ارسال</button>
                </form>
            </div>
        </div>
    @endsection

 

فایل پیوست

سید محمد سجاد آل محمد

توسط

سید محمد سجاد آل محمد

21 اردیبهشت 99

حذف شده
شما name="email" رو توی کنترولر دارید email_type میگیرید ولی توی blade نوشتید email
Steven R McQueen

21 اردیبهشت 99

حذف شده
خب اون رو هم درست کردم ولی بازم همین ارور رو میده
0
حذف شده

حل شد 

فایل پیوست

سید محمد سجاد آل محمد

توسط

سید محمد سجاد آل محمد

23 اردیبهشت 99