CakePHP问题:对非对象调用成员函数find()
我看过这里,发现有些人也有同样的问题,但这些解决方案似乎都不适合我 现在,我正在尝试向一个网站添加一个新的页面,我已经得到更新(我自己并没有从新网站开始)。现在,由于我的live站点中有相同的表,我将此代码与cakePHP的新副本一起使用。然而,我得到了“在非对象上调用成员函数find()”,我认为这可能与我调用find命令的方式或cakePHP配置文件的方式有所不同 将此添加到my Routes.php:CakePHP问题:对非对象调用成员函数find(),php,cakephp,Php,Cakephp,我看过这里,发现有些人也有同样的问题,但这些解决方案似乎都不适合我 现在,我正在尝试向一个网站添加一个新的页面,我已经得到更新(我自己并没有从新网站开始)。现在,由于我的live站点中有相同的表,我将此代码与cakePHP的新副本一起使用。然而,我得到了“在非对象上调用成员函数find()”,我认为这可能与我调用find命令的方式或cakePHP配置文件的方式有所不同 将此添加到my Routes.php: Router::connect('/events', array('c
Router::connect('/events', array('controller' => 'events', 'action' => 'eventDetails'));
我的型号代码:
class Event extends AppModel {
var $name = 'Event';
var $validate = array(
'id' => array(
'numeric' => array(
'rule' => array('numeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'startdate' => array(
'numeric' => array(
'rule' => array('numeric'),
//'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'endate' => array(
'numeric' => array(
'rule' => array('numeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'spaces' => array(
'alphanumeric' => array(
'rule' => array('alphanumeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'info' => array(
'alphanumeric' => array(
'rule' => array('alphanumeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'info' => array(
'alphanumeric' => array(
'rule' => array('alphanumeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
'img' => array(
'alphanumeric' => array(
'rule' => array('alphanumeric'),
//'message' => 'Your custom message here',
'allowEmpty' => true,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
);
//The Associations below have been created with all possible keys, those that are not needed can be removed
var $belongsTo = array(
'Team' => array(
'className' => 'Team',
'foreignKey' => 'team_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
);
}
这段代码指向,我想检查了我的所有db字段,这是我从另一个模型复制的代码,但为了与我的表一起使用而更改了它
我的控制器代码:
class EventsController extends AppController {
var $name = 'Events';
var $uses = array();
function eventDetails() {
$EventData = $this->Event->find('all');
print_r($EventData);
die();
} //End of function eventDetails()
} // End of EventsController Class
屏幕错误:
Notice (8): Undefined property: EventsController::$Event [APP/controllers/events_controller.php, line 10] Fatal error: Call to a member function find() on a non-object in /var/www/vh/app/controllers/events_controller.php on line 10
此表只处理事件和团队两个表-它们以小写形式保存,并在末尾使用“s”。teams表已经在db中,events表是我制作的新表。就像我说的,当我使用这些从live站点导出到测试数据库的表时,然后使用新的CakePHP设置is works,它会打印表的内容
所以这一定与CakePHP的设置方式有关,而这个(蛋糕)对我来说还是很新的。这是我第一次制作新的模型/控制器/桌子。我一直在做的就是为已经构建和工作的控制器添加新功能
我也试过这段代码,$EventData=$this->set('events',$this->Event->find('all');'我从另一篇关于此类错误的帖子中获得了“$this->set('events')
我已经尽可能地讲清楚了,如果我没有讲清楚,请告诉我
非常感谢您的帮助
格伦·柯蒂斯。删除:
var $uses = array();
CakePHP有自己的继承模型
$uses = array('Event', 'Foo'); // explicitly use Event and Foo model
$uses = array(); // don't use any models
默认情况下,CakePHP隐式地将$uses
设置为控制器的相应模型(在您的情况下为事件
)。因此,简单地删除它就是一种简单的方法。删除:
var $uses = array();
CakePHP有自己的继承模型
$uses = array('Event', 'Foo'); // explicitly use Event and Foo model
$uses = array(); // don't use any models
默认情况下,CakePHP隐式地将
$uses
设置为控制器的相应模型,在您的例子中是事件
。因此,简单地删除它就是一种简单的方法。感谢您的快速回复,我这样做(删除var$uses)并加载默认视图(?),我认为。它似乎忽略了我的“死()'命令!另外,请在默认视图布局中告诉我'发生了内部错误错误:发生了内部错误'。您是否正在访问/events/eventDetails
?听起来您有不止一个问题。当我转到->'localhost/site/events'时,我想我是的,并且我已经设置了一个将我传递到eventDetails函数的路由,或者这是错误的吗?看起来问题中所述的问题已经得到了回答,这个答案应该被接受……我会尝试访问我提到的URI。另外,正如Hoff所指出的,这回答了原始问题,如果您有更多问题,您应该发布一个新问题。感谢您的快速回复,我做到了(删除var$uses)和默认视图(?)很多,我想。它似乎超过了我的‘死’'命令!另外,请在默认视图布局中告诉我'发生了内部错误错误:发生了内部错误'。您是否正在访问/events/eventDetails
?听起来您有不止一个问题。当我转到->'localhost/site/events'时,我想我是的,并且我已经设置了一个将我传递到eventDetails函数的路由,或者错了吗?看起来问题中的问题已经得到了回答,这个答案应该被接受……我会尝试访问我提到的URI。另外,正如Hoff所指出的,这回答了原始问题,如果你有更多问题,你应该发布一个新问题。