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

Laravel-更改包的降价组件路径,laravel,Laravel,我正在开发一个使用Laravel7的软件包,在这个软件包中我会有电子邮件 我想使用降价电子邮件,因此我发布了以下视图: php artisan vendor:publish --tag=laravel-mail 我希望这些视图嵌入到我的包中,所以我只需将/resources/views/vendor/mail复制到/package/packageAuthor/packageName/resources/views/vendor/mail 但是我如何让我的应用程序为我的软件包加载组件呢 我知道我

我正在开发一个使用Laravel7的软件包,在这个软件包中我会有电子邮件

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

php artisan vendor:publish --tag=laravel-mail
我希望这些视图嵌入到我的包中,所以我只需将
/resources/views/vendor/mail
复制到
/package/packageAuthor/packageName/resources/views/vendor/mail

但是我如何让我的应用程序为我的软件包加载组件呢

我知道我可以编辑config
mail.php

'markdown' => [
    'theme' => 'default',

    'paths' => [
        base_path('package/packageAuthor/packageName/resources/views/vendor/mail'),
    ],
],
但是,当我想在其他Laravel项目中导入包时,如何使该项目使用我的组件?不修改配置

  • 我必须覆盖应用程序的配置吗
  • 我必须从包中发布视图吗
  • 我必须使用主题吗

  • 我在
    Markdown
    类中看到了这个函数:
    loadComponents from
    ,但是我如何使用它呢?

    好吧,现在我使用一个超类,它似乎可以工作:

    <?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),
            ];
        }
    }
    

    工作完美!谢谢