當我發佈到這個控制器時,我回到了這個響應: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()
替代是什麼,所以我可以得到這個工作。在CakePHP 2.0中發佈到帶有Ajax的控制器
我的數據庫表是submissions_favorites
。
這是我SubmissionFavorite型號:
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);
}
}
}
線26在我AppController的是:
protected function getSubmissionCount() {
$totalSubmissions = $this->Submission->find('count');
return $totalSubmissions;
}
這與其他事情完全無關。當我在我的AjaxController中編寫新方法時,我甚至沒有向AppController添加任何內容,所以我不確定它是如何相關的(或者爲什麼我甚至在該文件中出現錯誤)。
這是你的AppController中的行號26 ...? – 2012-02-29 12:15:22
更新了原來的帖子。 – 2012-02-29 22:16:06