我是cakephp的新手。我已经完成了所有必需的步骤,但仍然无法使用cakephp
在数据库中保存数据 来自Articlecontroller.php的public function adduser()
{
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
$user = $this->Users->patchEntity($user, $this->request->getData());
// Hardcoding the user_id is temporary, and will be removed later
// when we build authentication out.
$user->user_id = 1;
if ($this->Users->save($user)) {
$this->Flash->success(__('Your article has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Unable to add your article.'));
}
$this->set('article', $user);
}
UserTable模型的代码:
<?php
// src/Model/Table/ArticlesTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
}
}
答案 0 :(得分:6)
我认为您忘记在控制器中加载用户模型。应该修复在第一行之前在函数adduser()中添加这一行。它看起来应该是这样的。
public function adduser()
{
$this->loadModel('Users');
$user = $this->Users->newEntity();
...
Cakephp文档。 https://book.cakephp.org/3.0/en/controllers.html#loading-additional-models
答案 1 :(得分:0)
那么,您需要有一个使用该插件的CakePHP应用程序。您需要添加$ this-> loadComponent('Auth');到您的AppControllers initialize()方法并正确配置。
我强烈建议您完成CakePHP官方文档的完整博客教程,否则您将不会对框架中的任何插件或其他任何东西感到兴趣。它也涵盖了设置Auth。
答案 2 :(得分:0)
随着其他操作的开始,当不在与您正在访问的表相关的控制器中时,您需要加载模型及其相关实体。
当前检索表的方法是通过表注册表,如下所示:
use Cake\ORM\TableRegistry;
// Now $articles is an instance of our ArticlesTable class. This is how CakePHP 4 prefers it.
$articles = TableRegistry::getTableLocator()->get('Articles');
// Prior to 3.6.0
$articles = TableRegistry::get('Articles');
因此对于您的公共方法,它应如下所示:
public function adduser()
{
$usersTable = TableRegistry::getTableLocator()->get('Users');
$user = $usersTable->newEntity();
if ($this->request->is('post')) {
...code for handling post...
}
}
The CakePHP 3.x (and beyond) documentation regarding ORM outlines this well。 $this->loadModel('Articles')
工作时,快速搜索文档显示它在ORM部分和示例中都没有经常提及。