【问题标题】:How two use two markdown themes with same blade names?两个如何使用两个具有相同刀片名称的降价主题?
【发布时间】:2023-03-26 12:45:01
【问题描述】:

我在mail 配置中为markdown mailables 创建了第二条路径:

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

    'paths' => [
        resource_path('views/vendor/mail'),
        resource_path('views/vendor/newsletter'),
    ],
],

views/vendor/newsletter 中的每个新组件都可以像这样在邮件刀片中访问:

@component('mail::message-newsletter')

但是,我无法访问 views/vendor/newsletter/message.php,因为它已经在 views/vendor/mail/message.php 中。

我想为我的时事通讯模板使用相同的刀片名称 buttonfooterheaderlayoutmessage 等。

我尝试像这样添加newsletter 别名:

$this->loadViewsFrom(resource_path('views/vendor/newsletter'), 'newsletter');

这样我就可以像这样访问message

@component('newsletter::message') 

不幸的是,这会返回以下错误:

查看 [消息] 未找到。

我可以通过这样做来解决它

$this->loadViewsFrom(resource_path('views/vendor/newsletter/html'), 'newsletter');

但是resource_path('views/vendor/newsletter/markdown'中的markdown文件不会被渲染。

我认为它会起作用,因为时事通讯路径是在配置中设置的。 mail不也只是指向resource_path('views/vendor/mail')吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    mail 命名空间

    @('mail:: 
    

    被覆盖,这取决于是否调用了用于 HTML 的 render 或调用了用于文本的 renderText。这是在 Illuminate\Mail\Markdown 中硬编码的,因此您不能将 @('newsletter:: 用于 HTML 和 raw。

    您可以从 ServiceContainer 中获取 Markdown 类并更改组件路径:

    $markdown = \Illuminate\Container\Container::getInstance()->make(\Illuminate\Mail\Markdown::class);
    $markdown->loadComponentsFrom([
        resource_path('views/vendor/newsletter'), ]);
    

    这将仅使用时事通讯文件夹中的messagefooterheader 等。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多