【问题标题】:Laravel retrieve mailable view nameLaravel 检索可邮寄的视图名称
【发布时间】:2018-11-26 19:02:48
【问题描述】:

我正在尝试检索 viewma​​rkdown 名称等数据(不呈现视图示例:emails.user.welcome 用于app/Mail 目录中的每个可邮寄类。

Var dump UserWelcome 可邮寄类:

Route::get('rendermail', function() {

     $email = ( new App\Mail\UserWelcome() );

     return dd($email);

});

变量转储输出

UserWelcome {#441 ▼
  +locale: null
  +from: []
  +to: []
  +cc: []
  +bcc: []
  +replyTo: []
  +subject: null
  #markdown: null
  #html: null
  +view: null
  +textView: null
  +viewData: []
  +attachments: []
  +rawAttachments: []
  +callbacks: []
  +connection: null
  +queue: null
  +chainConnection: null
  +chainQueue: null
  +delay: null
  +chained: []

【问题讨论】:

    标签: laravel laravel-5 laravel-mail


    【解决方案1】:

    路由/web.php

    $return = [];
    $files = scandir("./Mail");
    foreach ($files as $key => $value) {
        $fullFileName = explode(".", $value);
        if ($fullFileName[1] === "php") {
            $fileName = $fullFileName[0];
            $className = "App\Mail\". $fileName ."()";
    
            array_push($return, (new $className)->returnArray());
        }
    }
    return $return;
    

    在所有 MailableClasses 中添加 returnArray 方法

    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class testMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->form = "Test";
            $this->view = "home";
            $this->subject = "home";
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function returnArray()
        {
            return [$this->view];
        }
    }
    

    【讨论】:

    • 是的,你是对的,但你没有提供任何解决方案,我认为这应该是一个评论,而不是一个答案。
    • 由于声誉缺失,我无法发表评论。此外,我对您的 UserWelcome::class 一无所知,但您可以执行以下操作:$email = App\Mail\UserWelcome::all();。如果它是模型,则该方法应该已经存在,否则您必须编写自己的方法
    • 我不认为这是可能的,因为可邮寄类不是模型,你知道创建一个 App\Mail\UserWelcome::all() 方法来获取视图名称吗?
    • 不幸的是,这不是我想要实现的,这只会列出文件并返回 app\mail 路径内的类名。我的目标是从构建方法$this-&gt;view('emails.orders.shipped');中定义的可邮寄类中获取视图名称。
    • 不,这应该返回 app\Mail 目录中每个 .php 文件的新实例。我没有测试过它,但关于stackoverflow.com/questions/534159/… 它应该可以工作
    猜你喜欢
    • 2018-04-01
    • 2020-12-20
    • 1970-01-01
    • 2020-02-15
    • 2018-03-16
    • 2020-02-16
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多