Laravel - Изменить путь компонентов уценки для пакета - PullRequest
0 голосов
/ 21 июня 2020

Я разрабатываю пакет, используя 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. Нужно ли мне публиковать sh представления из моего пакета?
  3. Обязательно ли использовать темы?

Я вижу эту функцию: loadComponentsFrom в классе Markdown, но как я могу ее использовать?

1 Ответ

0 голосов
/ 21 июня 2020

Хорошо, пока использую суперкласс, вроде работает:

<?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),
        ];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...