Как добавить в таблицу другой контроллер Cakephp 3 - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в cakephp3. Я хотел бы знать, возможно ли добавить новую форму ввода controller1 в table2.

Это форма входа. Поэтому я хотел бы сначала проверить, зарегистрирован ли пользователь, а затем, после проверки подлинности, я хотел бы сохранить данные в другой таблице.

class UsersController extends AppController
{

    public function login()
    {
        $user = $this->Users->newEntity();
        if($this->request->is(['post']))
        {
            $user = $this->Auth->identify();
            if($user)
            {
                $logs = TableRegistry::get('AttendsTable');
                $log->username = 'lorem ipsum';
                $log->datenow = '2018-11-10';
                $log->tin = '12:42:00';
                $log->tout ='12:42:00';
                $logs->save($log);
                $this->Auth->setUser($user);
                $this->redirect(['action'=>'index']);
            }
        }
    }

Я получаю ошибку:

"Аргумент 1, передаваемый в Cake \ ORM \ Table :: save (), должен реализовывать интерфейс Cake \ Datasource \ EntityInterface, указанный экземпляр stdClass, вызываемый в C: \ xampp \ htdocs \ TimeStamps \ src \ Controller \ UsersController.php на линии 32 "

1 Ответ

0 голосов
/ 12 ноября 2018

Ваш код не работает, потому что функция Model->save() ожидает объект. В вашем фрагменте $log не определен первым, поэтому PHP просто делает его stdClass (должен любить программирование высокого уровня: p).

Примерно так должно работать:

$logs = TableRegistry::get('AttendsTable');
$log = $logs->newEntity([
    'username' => 'lorem ipsum',
    'datenow' => '2018-11-10',
    // ...
]);

$logs->save($log);

Более того, я слышал, что лучше использовать $this->loadModel() вместо TableRegistry::get():

$this->loadModel('ExternalModel');

// Now available:
$this->ExternalModel->//...
...