PHP / Laravel 5.4 "Недопустимый аргумент для foreach ()" - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть базовый массив электронных писем, которые я пытаюсь создать, чтобы присвоить значения другой переменной для отправки по почте Laravel. Вот дамп и массив из массива, $emails, перед foreach:

array:4 [
  0 => "test@example.com"
  1 => "testTwo@example.com"
  2 => "testThree@example.com"
  3 => "testFour@example.com"
]

И foreach это:

foreach ($emails as $email) {
    $this->bcc = $email;
}

Я не уверен, почему я получаю эту ошибку, так как это явно массив. В конечном итоге я пытаюсь отправить несколько писем, но просто назначаю этот массив для bcc отправляемого сообщения:

$this->bcc = $emails;

приводит к ошибке Illegal string offset 'address', хотя дамп и штамп $this показывают, что массив находится в свойстве bcc:

enter image description here

Кто-нибудь видит здесь основную проблему, помимо моего отсутствия знаний об отправке нескольких писем с помощью Laravel? Ура!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Я решил эту проблему, отправив строку адресов, а не массив, а затем просто взорвал строку в массив с ключами:

class ContactEmail extends Mailable
{
use Queueable, SerializesModels;

private $data;
public $body;

/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct($data)
{
    $this->data = $data['data'];
    $this->body = $this->data['body'];
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    $addresses = explode(', ', $this->data['emails']);

    return $this->bcc($addresses)
                ->subject($this->data['subject'])
                ->markdown('emails.CustomerContact.Custom');
}

}

0 голосов
/ 25 апреля 2018

Ошибка, которую вы получаете, заключается в том, что функция bcc () ожидает массив или массив массивов с клавишей «address».

Попробуйте что-то вроде этого:

$emailArray = [];

foreach($emails as $email) {
  emailArray[]["address"] = $email;
  emailArray[]["name"] = "testname";
}

$this->bcc = $emailArray;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...