Я пытаюсь использовать метод php Trait внутри моего почтового шаблона уценки в laravel, проблема в том, что я получаю следующую ошибку:
ErrorException : Call to undefined method Illuminate\View\Engines\CompilerEngine::getExcerpt() (View: C:\xampp\htdocs\dtcburger.com\resources\views\emails\weekly\weekly-mail-1.blade.php)
Я пытаюсь использовать метод getExcerpt из моего класса Strings php Trait, но он не работает.
Это мой почтовый класс:
<?php
namespace App\Mail\weekly;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Traits\Strings;
class WeeklyMail1 extends Mailable
{
use Queueable, SerializesModels;
use Strings;
public $mailData;
public function __construct($mailData)
{
$this->mailData = $mailData;
}
public function build()
{
$mail = $this->markdown('emails.weekly.weekly-mail-1')
->from(env('MAIL_FROM'), env('MAIL_FROM_NAME'))
->subject($this->mailData['subject']);
return $mail;
}
}
И мой шаблон почтовой рассылки:
@component('mail::message', ['mailData' => $mailData])
# {{ $mailData['subject'] }}
@if(count($mailData['events']) > 0)
# No te pierdas nuestros próximos eventos
@component('mail::table')
| | |
| :------------- | :------------- |
@foreach($mailData['events'] as $event)
| <img src="{{ $event->image }}" style="min-width:120px; max-width:120px; min-height:100px; max-height:100px;"> | <strong><p>{{ $event->title }}</p></strong><p>{{!! $this->getExcerpt($event->body, 0, 100) !!}}</p> |
@endforeach
@endcomponent
@endif
@endcomponent
И моя черта Strings с методом getExcerpt внутри:
<?php
namespace App\Traits;
use Str;
trait Strings
{
public function slugify($title){
$cleanString = $this->cleanString($title);
$slugified = Str::lower( Str::slug($title, '-') );
return $slugified;
}
public function getExcerpt($str, $startPos = 0, $maxLength = 30, $end = '[...]') {
if(strlen($str) > $maxLength) {
$excerpt = substr($str, $startPos, $maxLength - 6);
$lastSpace = strrpos($excerpt, ' ');
$excerpt = substr($excerpt, 0, $lastSpace);
$excerpt .= $end;
} else {
$excerpt = $str;
}
return $excerpt;
}
}