У вас неправильный синтаксис для доступа к массивам в PHP, используйте квадратные скобки:
$mailbox->username = $data['username'];
$mailbox->name = $data['name'];
То, как вы его получили, пытается вызвать функцию с переменной, названной в $data
, но $ data - это массив, а не строка (см. Функции переменных для получения дополнительной информации об этом).
Также не следует устанавливать пользовательский ввод непосредственно в свойствах $ mailbox - это обходитПроверка.Вместо этого просто вставьте $ data в newEntity()
:
public function addMailbox($data)
{
$this->loadModel('Mailbox'); // This also is not required if this function is inside the MailboxController
$mailbox = $this->Mailbox->newEntity($data);
if ($this->Mailbox->save($mailbox)) {
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Error'));
}