InvalidArgumentException: просмотр [тем.] Не найден - PullRequest
0 голосов
/ 19 октября 2019

Я получаю следующее сообщение об ошибке на ровном месте.

InvalidArgumentException: просмотр [тем.] Не найден. Трассировка исключений: 1 Подсветка \ View \ FileViewFinder :: findInPaths ("themes.") C: \ xampp \ htdocs \ RoosterIKEA \ vendor \ laravel \ framework \ src \ Illuminate \ View \ FileViewFinder.php: 92 2 Подсветка \ View \ FileViewFinder:: findNamespacedView ("mail :: themes.") C: \ xampp \ htdocs \ RoosterIKEA \ vendor \ laravel \ framework \ src \ Illuminate \ View \ FileViewFinder.php: 76

Любая идея, котораяфайл это может быть и что происходит?

1 Ответ

1 голос
/ 19 октября 2019

В классе Illuminate\Mail\Markdown строка 64

return new HtmlString(($inliner ?: new CssToInlineStyles)->convert(
    $contents, $this->view->make('mail::themes.'.$this->theme)->render()
));

Похоже, что $this->theme - пустая строка

Теперь класс уже определяет свойство в строке 24

/**
 * The current theme being used when generating emails.
 *
 * @var string
 */
protected $theme = 'default';

Это означает, что вы могли переопределить это свойство пустой строкой или, возможно, пустым значением в вашей электронной почте для уценки

Если вы публикуете компоненты с помощью

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

You 'Я посмотрю файл CSS в resources/views/vendor/mail/html/themes с именем default.css

Я нашел способ воспроизвести эту ошибку специально, чтобы иметь класс Mailable, подобный такому:

Run

php artisan make:mail OrderShipped --markdown=emails.orders.shipped

Затем переопределите свойство темы пустой строкой

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    protected $theme = ''; // <--- HERE

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.orders.shipped');
    }
}

Теперь отправьте электронное письмо

use App\User;
use App\Mail\OrderShipped;

Route::get('/', function () {
    \Mail::to(User::first())->send(new OrderShipped());
});

И вы получите ту же ошибку
enter image description here

Решение здесь состоит в том, чтобы либо удалить свойство protected $theme = '';, либо установить его на default

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...