【发布时间】:2012-02-29 12:03:58
【问题描述】:
当我发布到这个控制器时,我得到了回复:Fatal error: Call to a member function find() on a non-object in /app/Controller/AppController.php on line 26,这可能与明确使用$this->data() 有关。我正在使用CakePHP save without form
根据那里的建议,但由于我没有使用表单来发送数据(因此不使用$this->request->data()),我想知道$this->data() 的替代品是什么,所以我可以让它工作。
我的数据库表是submissions_favorites。
这是我最喜欢的模型:
class SubmissionFavorite extends AppModel {
var $name = 'SubmissionFavorite';
var $belongsTo = array(
'User' => array(
'className' => 'User'
)
);
}
这是 AjaxController(我要发布的内容):
class AjaxController extends AppController {
var $layout = 'ajax'; // uses an empty layout
var $autoRender = false; // renders nothing by default
var $uses = 'SubmissionFavorite';
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
$this->Auth->allow('addFavorite');
$this->Auth->flashElement = 'flash_error';
}
public function addFavorite() {
$this->autoRender = false;
$this->data['SubmissionFavorite']['user_id'] = $this->Session->read('Auth.User.id');
$this->data['SubmissionFavorite']['submission_id'] = $_POST['id'];
$this->data['SubmissionFavorite']['when'] = DboSource::expression('NOW()');
$message = array('success' => 'success');
$toReturn = json_encode($message);
if ($this->RequestHandler->isAjax()) {
if ($this->Session->read('Auth.User')) {
$this->SubmissionFavorite->save($this->data);
return $toReturn;
} else {
$login = array('login' => 'Please log in to add favorites');
return json_encode($login);
}
}
}
我的 AppController 中的第 26 行是:
protected function getSubmissionCount() {
$totalSubmissions = $this->Submission->find('count');
return $totalSubmissions;
}
这与其他任何事情完全无关。当我在我的 AjaxController 中编写新方法时,我什至没有向 AppController 添加任何内容,所以我不确定它是如何相关的(或者为什么我什至在该文件中收到错误)。
【问题讨论】:
-
这是您的 AppController 中的第 26 行...?
标签: php ajax cakephp cakephp-2.0