【问题标题】:Laravel Mailable not finding my aliased views when developed inside a package在包内开发时,Laravel Mailable 找不到我的别名视图
【发布时间】:2021-05-01 21:22:09
【问题描述】:

我的 SSH 服务提供商加载视图并将其别名为 ssh

public function boot()
{
    ...
    $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'ssh');
    ...
}

在我的Mail 目录中,我有一个用于调试目的的测试邮件,因为我的服务提供商也有一个正在运行的调度程序,我想在它执行后发送电子邮件。它看起来像这样:

class DockerTest extends Mailable
{
    use Queueable, SerializesModels;

    private User $user;
    private Vps $vps;

    public function __construct(User $user, Vps $vps)
    {
        $this->user = $user;
        $this->vps  = $vps;
    }

    public function build()
    {
        return $this->view('ssh:mail.test', [
            'user' => $this->user,
            'vps'  => $this->vps
        ]);
    }
}

但是,当我尝试在php artisan tinker 中测试此电子邮件时,如下所示:

Mail::to('foo@bar.com')->send(new DockerTest(($vps = Vps::find(1)), $vps->user))

我遇到了一个异常

InvalidArgumentException 带有消息“未找到查看 [ssh:mail.test]。”

我在我的服务提供商的boot 函数中加载我的路线:

require_once __DIR__ . '/../Http/routes.php';

当我在该文件夹中执行此操作时:

Route::get('/test', function() { return view('ssh:mail.test', [($vps = Vps::find(1)), $vps->user]); });

它工作得很好吗?有任何想法吗?我正在将它作为一个包进行开发,我的目录布局如下所示:

app
boostrap
...
packages
    MyPackage
        Ssh
            src
                Providers
                    SshServiceProvider.php
                Http
                    Routes.php
                Resources
                    views
                        mail
                            test.blade.php
                Mail
                    DockerTest.php
                database
                    migrations
                        ...
...
vendor
...

【问题讨论】:

    标签: php laravel ssh eloquent


    【解决方案1】:

    问题出在您的视图加载程序中。 当你在包中加载视图时,你应该这样写两个冒号:

    return view('ssh::mail.test')
    

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 2021-10-18
      • 2019-12-25
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      相关资源
      最近更新 更多