我和cakephp3一起工作。我想做个登录页面。会计数据库中的表名为“用户”。
这是我的密码:
<?php
namespace App\Controller;
use App\Controller\AppController;
class UsersController extends AppController {
public function login() {
if ($this->request->is('post')) {
$data = $this->request->data;
$cnt = $data->Users->find()
->count();
if ($cnt > 0) {
$this->redirect(['action' => 'index']);
} else {
$this->set('error', 'username or password is incorrct ');
}
}
}}这是Users.php
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
class UsersTable extends Table {
}在登录页面登录后:
错误:调用非对象上的成员函数find()
在你看来,是什么问题。
发布于 2016-01-31 18:42:01
$data不是表对象。
$data = $this->request->data;
$cnt = $data->Users->find()这很明显。
我强烈建议您花一些时间学习调试技术,以及如何处理此类问题和错误消息。开发人员应该能够在没有外部帮助的情况下很快解决这类问题。对于开发人员来说,这被认为是正常的工作。
( 1)阅读整个错误消息( 2)在Google和Stackoverflow上搜索它,其他人以前不太可能收到这条消息。( 3)根据错误信息产生的原因采取行动。
在此错误消息的情况下,调试您正在处理的对象类型,并找出为什么它不是您所期望的对象。通过调用堆栈有帮助。为此使用X调试分析器,这是一个很好的工具。
另外,不要使用像$cnt这样的变量名,我假设这意味着“帐户”,它甚至不适合它所使用的上下文。很糟糕的名字。相反,使用可读并适合于上下文的适当变量名称。这是一个完全错误的假设,保持变量名称短是任何一种节省时间-它显然不是。下一个处理这些变量的人需要一本字典,或者对这些变量的含义做很多猜测。
发布于 2016-02-01 09:46:06
而不是$cnt =$data->->count();使用$cnt = $this->{$this->modelClass}->find('count');
https://stackoverflow.com/questions/35115914
复制相似问题