我正在开发一个使用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中导入这个包时,我如何使这个项目使用我的组件呢?而不修改配置?
我看到了这个函数:loadComponentsFrom在Markdown类中,但是如何使用它呢?
发布于 2020-06-21 11:56:15
好的,现在我使用了一个超类,它看起来很管用:
<?php
namespace Lpa\Common\Illuminate;
use Illuminate\Container\Container;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Markdown;
class MailableLpa extends Mailable
{
/**
* Override buildMarkdownView() to define new components path
*
* @return array
*
* @throws \ReflectionException
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
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),
];
}
}https://stackoverflow.com/questions/62497744
复制相似问题