Кажется, запрос обработан, но сервер возвращает страницу с ошибкой - PullRequest
0 голосов
/ 22 мая 2011

, поскольку я снова использую 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));
    }
}

1 Ответ

1 голос
/ 23 мая 2011

Зайдите в приложение \ конфиги и вы увидите там интересный файл:

application.ini

Ctrl + F в нем "ошибка", и вы понимаете, что делать дальше.

...