, поскольку я снова использую ZendFramework, я начал «расширять» приложение QuickStart.
Я использую компонент ZendX jQuery в качестве View Helper.
У меня есть один контроллер MonsterController
это имеет два действия, кроме indexAction:
AddAction
attackAction
Оба принимают параметры через _getParam($param, $default)
.
Пример запроса для addAction будет /monster/add/dragon/health/100/attackDamage/23
.
Действие атаки просто принимает идентификатор.
Реальная проблема заключается в том, что, если я позвоню любому из них, я получу «Ошибка приложения».
Нет трассировки стека или чего-либо еще, кроме простой страницы с «Ошибка приложения».
Что не должно случиться.
Интересно то, что 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));
}
}