我想使用save方法来保存表单数据。但是当我调用save on object时,它会给出以下错误。如果我在对象上调用insert方法,它工作正常。 致命错误:调用未定义的方法
第44行的/var/www/html/ZendTecAdmin/application/controllers/AdminController.php中的Application_Model_Content :: save()
以下是我的控制器操作代码
$content = new Application_Model_Content();
if($this->_request->getParams('id')){
$id = $this->_request->getParams('id');
$row = $content->find($id)->toArray();
if($row){
$form->populate($row[0]);
}
}
if ($this->_request->getPost('Publish')) {
$formData = $this->_request->getPost();
if ($form->isValid($formData)) { //If form data is valid
unset($formData['Publish']);
$content->save($formData);
//$content->insert($formData); //it works fine
}
}
以下是我的模特
<?php
class Application_Model_Content extends Zend_Db_Table
{
protected $_name = "content";
}
请帮我解决。
答案 0 :(得分:1)
您可以获取Row对象并在其上使用save():
$select = $content->select()->where('id = ?',$id);
$row = $content->fetchRow($select);
$row->name = 'John'
$row->birthdate = 1980-11-04;
$row->save();
要扩展Row Class,您可以将protected $_rowClass = 'Application_Model_Row_User';
添加到模型中,然后创建class Application_Model_Row_User extends Zend_Db_Table_Row_Abstract
。
现在,您可以将自己的方法添加到此类中,如下所示:
public function dateToAge(){
return (int)floor( (strtotime(date('Y-m-d')) - strtotime($this->birthdate)) / 31556926);
}
以后:
$select = $content->select()->where('id = ?',$id);
$row = $content->fetchRow($select);
$name = $row->name
$age = $row->dateToAge();
您可以在此处阅读更多内容:http://framework.zend.com/manual/1.12/en/zend.db.table.row.html
答案 1 :(得分:0)
如果在模型内容中编写代码,则可以正常工作
<?php
class Application_Model_Content extends Zend_Db_Table {
protected $_name = "content";
function save($data) {
if (null === ($id = $data['id'])) {
unset($data['id']);
$this->insert($data);
} else {
$this->update($data, array('id = ?' => $id));
}
}
}
有没有其他标准方法可以做到这一点?