代码之家  ›  专栏  ›  技术社区  ›  Shiro

Laravel通知希望在通知刀片模板中使用View HTML

  •  1
  • Shiro  · 技术社区  · 6 年前

    我正在使用Laravel 5.7.20版本来构建自定义降价模板。模板复制自 /resources/views/vendor/notifications/email.blade.php 发出命令后生成 php artisan vendor:publish --tag=laravel-notifications .

    以下显示HTML的工作:

    return (new MailMessage)
        ->line(new HtmlString('The <strong>introduction</strong> to the notification.'))
        ->line('The <strong>introduction</strong> to the notification.')
        ->line(new HtmlString('Due Date: <strong>' . Carbon::parse($this->info->created_at)->format('Y-m-d H:i') . '</strong>'))
        ->line('Due Date: <strong>' . Carbon::parse($this->info->created_at)->format('Y-m-d H:i') . '</strong>')
        ->action('Notification Action', url('/'));
    

    image

    这不起作用。用我自己的降价

    return (new MailMessage)
                ->line(new HtmlString('The <strong>introduction</strong> to the notification.'))
                ->line('The <strong>introduction</strong> to the notification.')
                ->line(new HtmlString('Due Date: <strong>' . Carbon::parse($this->info->created_at)->format('Y-m-d H:i').'</strong>'))
                ->line('Due Date: <strong>' . Carbon::parse($this->info->created_at)->format('Y-m-d H:i').'</strong>')
                ->action('Notification Action', url('/'))
                ->markdown('mail.notification.permission');
    

    image

    我的mail.notification.permission文件是从 laravel-project/resources/views/vendor/notifications/email.blade.php

    我想我需要 看法 不是一个 降价 . 但我改变了 ->view('mail.notification.permission'); 我有错误 No hint path defined for [mail]. (View: /Users/shiro/Sites/laravel-project/resources/views/mail/notification/permission.blade.php)

    我应该使用HTML而不是标记格式复制哪个文件。

    我在通知使用中没有看到任何解决方案-查看而不是-标记。或者,在通知电子邮件中显示HTML的正确流程是什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Shiro    6 年前

    好的,我发现了错误。

    如果要使用 ->view() ,刀刃模板无法使用 @component('mail::message') ,它必须用新的刀片布局构建(像普通页面一样构建您自己的视图)。那你就不会得到 No hint path defined for [mail] 错误。

    Laravel通知为学习它们的语法和生态系统做了很多标记。对于那些想要简单通知的人来说,这很好。但是如果你想要定制页面,我建议你使用 view() .

    我共享我的布局刀片文件,在我从MarkDown发送后复制。内容部分你有自己的逻辑。

        public function toMail($notifiable)
        {
            return (new MailMessage)
                ->subject('New Invoice')
                ->view( 'mail.notification.custom_invoice', ['invoice' => $this->invoice]);
        {
    

    email_layout.blade.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #f5f8fa; color: #74787E; height: 100%; hyphens: auto; line-height: 1.4; margin: 0; -moz-hyphens: auto; -ms-word-break: break-all; width: 100% !important; -webkit-hyphens: auto; -webkit-text-size-adjust: none; word-break: break-word;">
    <style>
        @media  only screen and (max-width: 600px) {
            .inner-body {
                width: 100% !important;
            }
    
            .footer {
                width: 100% !important;
            }
        }
    
        @media  only screen and (max-width: 500px) {
            .button {
                width: 100% !important;
            }
        }
    </style>
    
    <table class="wrapper" width="100%" cellpadding="0" cellspacing="0" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #f5f8fa; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
        <tr>
            <td align="center" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box;">
                <table class="content" width="100%" cellpadding="0" cellspacing="0" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
                    <tr>
                        <td class="header" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; padding: 25px 0; text-align: center;">
                            <a href="{{ url('/') }}" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; color: #bbbfc3; font-size: 19px; font-weight: bold; text-decoration: none; text-shadow: 0 1px 0 white;">
                                {{ config('app.name', 'Laravel') }}
                            </a>
                        </td>
                    </tr>
    
    
                    <!-- Email Body -->
                    <tr>
                        <td class="body" width="100%" cellpadding="0" cellspacing="0" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #FFFFFF; border-bottom: 1px solid #EDEFF2; border-top: 1px solid #EDEFF2; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
                            <table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #FFFFFF; margin: 0 auto; padding: 0; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">
                                <!-- Body content -->
                                <tr>
                                    <td class="content-cell" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; padding: 35px;">
                                        @yield('content')
                                        <p style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; color: #74787E; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">Regards,<br>{{ config('app.name', 'Laravel') }}</p>
                                        @yield('subcopy')
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
    
                    <tr>
                        <td style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box;">
                            <table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; margin: 0 auto; padding: 0; text-align: center; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">
                                <tr>
                                    <td class="content-cell" align="center" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; padding: 35px;">
                                        <p style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; line-height: 1.5em; margin-top: 0; color: #AEAEAE; font-size: 12px; text-align: center;">© {{ date('Y') }} {{ config('app.name', 'Laravel') }}. All rights reserved.</p>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
    </body>
    </html>
    
    
    推荐文章