cakephp 3. * сохранить принадлежит к данным

У меня есть формуляр внешнего интерфейса для добавления нового пользователя. Кроме того, он должен добавить компанию «Компания» в таблицу «Компании» и установить для company_id нового пользователя новый идентификатор Companys. При отправке я получаю сообщение об ошибке «Невозможно добавить пользователя».

(Пользователь принадлежит Ассоциации Компании)

В UsersController.php:

public function add()
{
$this->viewBuilder()->layout('login');
$user = $this->Users->newEntity($this->request->data,['associated' => ['Companies']]);
if ($this->request->is('post')) {
$user = $this->Users->patchEntity($user,['associated' => ['Companies']]);
if ($this->Users->save($user) ) {
$this->Flash->success(__('The user has been saved.'));
return $this->redirect(['action' => 'login']);
}
$this->Flash->error(__('Unable to add the user.'));
}
$this->set('user', $user);

$this->loadModel('Companies');
$this->set('companies', $this->Companies->find('all',array('fields'=>array('name','id'))));
}

Отладка данных $ this-> request-> возвращает:

    Array
(
[username] => the name
[email] => [email protected]
[password] => test
[company] => Array
(
[name] => comanysnametest
[iban] => DE02 520934 5  02384
[bic] => Genoht 034
[kontoinhaber] => the name here
[straße] => alphastr
[hausnummer] => 1337
[plz] => 46467
[ort] => Supp
[geschäftsführung] => another name
[vat] => 038u pwdf8a spdf
)

)

РЕДАКТИРОВАТЬ:

UsersTable :: validationDefault:

public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create');

$validator
->add('email', 'valid', ['rule' => 'email'])
->requirePresence('email', 'create')
->notEmpty('email')
->add('email', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);

$validator
->requirePresence('password', 'create')
->notEmpty('password');

$validator
->requirePresence('username', 'create')
->notEmpty('username')
->add('username', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);

$validator
->allowEmpty('role');

return $validator;
}

CompaniesTable :: validationDefault

public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create');

$validator
->requirePresence('name', 'create')
->notEmpty('name')
->add('name', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);

$validator
->requirePresence('modul', 'create')
->notEmpty('modul');

$validator
->allowEmpty('iban');

$validator
->allowEmpty('bic');

$validator
->allowEmpty('kontoinhaber');

$validator
->requirePresence('straße', 'create')
->notEmpty('straße');

$validator
->requirePresence('hausnummer', 'create')
->notEmpty('hausnummer');

$validator
->add('plz', 'valid', ['rule' => 'numeric'])
->requirePresence('plz', 'create')
->notEmpty('plz');

$validator
->requirePresence('ort', 'create')
->notEmpty('ort');

$validator
->requirePresence('geschäftsführung', 'create')
->notEmpty('geschäftsführung');

$validator
->allowEmpty('vat');

return $validator;
}

0

Решение

Используйте эту отладку ($ user-> errors ()); чтобы увидеть, пошла ли валидация. Это распечатает ошибки проверки массива каждого столбца, если таковые имеются.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]