Laravel-更改软件包的降价组件的路径



我正在使用Laravel 7开发一个软件包,在这个软件包中,我将收到电子邮件。

我想使用降价电子邮件,所以我发布了视图:

php artisan vendor:publish --tag=laravel-mail

我希望这些视图嵌入到我的包中,所以我只是/resources/views/vendor/mail复制到/package/packageAuthor/packageName/resources/views/vendor/mail

但是,如何让我的应用程序加载包的组件?

我知道我可以编辑配置mail.php

'markdown' => [
'theme' => 'default',
'paths' => [
base_path('package/packageAuthor/packageName/resources/views/vendor/mail'),
],
],

但是当我想在其他Laravel项目中导入软件包时,我如何使这个项目使用我的组件?

  1. 我必须覆盖应用程序的配置吗?
  2. 我必须从我的包中发布视图吗?
  3. 我必须使用主题吗?

我看到这个函数:loadComponentsFromMarkdown类中,但我如何使用它?

好吧,现在我使用一个超级类,它似乎有效:

<?php
namespace LpaCommonIlluminate;
use IlluminateContainerContainer;
use IlluminateMailMailable;
use IlluminateMailMarkdown;
class MailableLpa extends Mailable
{
/**
* Override buildMarkdownView() to define new components path
*
* @return array
*
* @throws ReflectionException
* @throws IlluminateContractsContainerBindingResolutionException
*/
protected function buildMarkdownView()
{
/** @var Markdown $markdown */
$markdown = Container::getInstance()->make(Markdown::class);
// use package resources path
$markdown->loadComponentsFrom([
__DIR__. '/../../resources/views/vendor/mail'
]);
$data = $this->buildViewData();
return [
'html' => $markdown->render($this->markdown, $data),
'text' => $this->buildMarkdownText($markdown, $data),
];
}
}

最新更新