如何从另一个控制器 Cakephp 3 添加到 Table
How to Add to Table from Another Controller Cakephp 3
我是 cakephp3 的新手。我想知道是否可以向 table2 添加一个新的输入表单 controller1。
这是一个登录表单。所以我想先验证用户是否注册,然后验证后,我想将详细信息保存到另一个table。
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']);
}
}
}
我遇到一个错误:
"Argument 1 passed to Cake\ORM\Table::save() must implement interface Cake\Datasource\EntityInterface, instance of stdClass given, called in C:\xampp\htdocs\TimeStamps\src\Controller\UsersController.php on line 32"
您的代码无法运行,因为 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->//...
我是 cakephp3 的新手。我想知道是否可以向 table2 添加一个新的输入表单 controller1。
这是一个登录表单。所以我想先验证用户是否注册,然后验证后,我想将详细信息保存到另一个table。
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']);
}
}
}
我遇到一个错误:
"Argument 1 passed to Cake\ORM\Table::save() must implement interface Cake\Datasource\EntityInterface, instance of stdClass given, called in C:\xampp\htdocs\TimeStamps\src\Controller\UsersController.php on line 32"
您的代码无法运行,因为 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->//...