I am sending a notification using Laravel and am having trouble figuring out how to send a second action. Here is my code for the toMail
method:
public function toMail($notifiable)
{
return (new MailMessage)
->subject($this->options['subject'])
->greeting($this->options['greeting'])
->line($this->options['contentParagraph1'])
->line($this->options['contentParagraph2'])
->action('Facebook', 'https://www.facebook.com/')
->line($this->options['contentParagraph5'])
->action('LinkedIn', 'https://www.linkedin.com/')
->line($this->options['contentParagraph3'])
->line($this->options['contentParagraph4'])
->salutation($this->options['salutation']);
}
What I am getting, is only the second action. It looks like the second action is overriding the first one. Is there a way to keep both actions or to use a link instead of a button?
The SimpleMessage
class is designed for creating simple messages that have one call to action button, you can find the code that powers the functionality in Illuminate/Notifications/Messages/SimpleMessage.php and the template for the SimpleMessage emails can be found in Illuminate/Notifications/resources/views/email.blade.php — note the single button.
You can create more complex messages using the Markdown Mail Notifications feature, which will allow you to include as many buttons as you like. You can implement this like so:
markdown
option, e.g: php artisan make:notification InvoicePaid --markdown=mail.invoice.paid
views/mail/invoice/paid.blade.php
Add as many buttons as you like, e.g:
@component('mail::message')
# Introduction
@component('mail::button', ['url' => $url1])
Button 1 Text
@endcomponent
@component('mail::button', ['url' => $url2])
Button 2 Text
@endcomponent
@component('mail::button', ['url' => $url3])
Button 3 Text
@endcomponent
Thanks,<br>
{{ config('app.name') }}
@endcomponent
Replace your calls to SimpleMessage
methods with a reference to your markdown template when constructing your email, e.g:
return (new MailMessage)
->subject($this->options['subject'])
->markdown('mail.invoice.paid', $this->options);
The second parameter in the markdown
method is an array to pass into your view, through this you can include the various values you'd like to include in your email, such as contentParagraph1
, greeting
and salutation
.