0
由于我再次使用ZendFramework,我开始“扩展”QuickStart应用程序。 我使用ZendX jQuery组件作为View Helper。 我有一个控制器MonsterController
这有除的indexAction两个动作:似乎要求处理请求,但服务器返回错误页面
的addAction
attackAction
双方通过_getParam($param, $default)
采取PARAMS。 addAction的示例查询将是/monster/add/dragon/health/100/attackDamage/23
。 attackAction只需要一个Id。
实际的问题是,如果我打电话给他们中的任何一个,我会得到一个“应用程序错误”。 没有堆栈跟踪或其他任何与“应用程序错误”的普通页面。 这不应该发生。
有趣的是,addAction实际上执行了一个操作,将所需的怪物添加到数据库中,但是attackAction什么都不做。
public function attackAction()
{
$id = $this->_getParam("id", null);
$mapper = new Application_Model_MonsterMapper();
$monster = new Application_Model_Monster(array("Id" => $id, "health" => 1));
$mapper->save($monster);
}
public function addAction()
{
$monster = new Application_Model_Monster();
$monster->setName($this->_getParam("name", ""))
->setHealth($this->_getParam("health", 0))
->setAttackDamage($this->_getParam("attackDamage", 0));
$mapper = new Application_Model_MonsterMapper();
$mapper->save($monster);
}
public function save(Application_Model_Monster $model)
{
$data = array(
'name' => $model->getName(),
'health' => $model->getHealth(),
'attackDamage' => $model->getAttackDamage()
);
if (null === ($id = $model->getId())) {
unset($data['id']);
$this->getDbTable()->insert($data);
} else {
$this->getDbTable()->update($data, array('id = ?' => $id));
}
}