2012-05-31 2 views
1

У меня проблема с моим приложением CakePHP 1.3, и я не уверен, что это проблема с кодом или проблема с БД.Ошибка CakePHP 1.3 «Отсутствует контроллер» - имеется контроллер Существует

У меня есть довольно простая функция в одном из моих контроллеров, и всякий раз, когда я добавляю часть запроса к этому контроллеру, я получаю следующее (бешенство и совершенно бесполезно) сообщения об ошибке:

Missing Controller 
Error: InternalError.htmlController could not be found. 

Error: Create the class InternalError.htmlController below in file: 
app/controllers/internal_error.html_controller.php 

Вот является Модель ForecastZones

class ForecastZone extends AppModel { 
    var $name = 'ForecastZone'; 
    var $displayField = 'name'; 
    //The Associations below have been created with all possible keys, those that are not needed can be removed 

    var $belongsTo = array(
     'State' => array(
      'className' => 'State', 
      'foreignKey' => 'state_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ) 
    ); 

    var $hasMany = array(
     'ForecastZonePoly' => array(
      'className' => 'ForecastZonePoly', 
      'foreignKey' => 'forecast_zone_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ) 
    ); 

} 

Вот функция контроллера, который по непонятным причинам не удается:

function poly($id = null) { 
    if (!$id) { 
     $this->Session->setFlash(__('Invalid forecast zone', true)); 
     $this->redirect(array('action' => 'index')); 
    } 
    $this->layout = false; 

    $result = $this->ForecastZone->query("SELECT coords FROM forecast_zone_polies WHERE forecast_zone_id = $id;"); 
    $this->set('forecastZone', $result); 
} 

CakePHP epic не работает, когда я вызываю это действие контроллера. Он зависает в течение долгого времени ... а затем вместо того, чтобы рассказывать мне что-то полезное, например «запрос к базе данных занимает слишком много времени» или «разрыв модели» или что-то в этом роде ... он просто сдается и дает мне это полное сообщение об ошибке BS ,

Это не проблема пути, пути верны. Если я удаляю переменную $ result, все работает нормально, и я получаю соответствующее сообщение «forecastZone is not set». Суть этой проблемы, по-видимому, заключается в том, что запрос выполняется навсегда, а затем Cake не сообщает о сообщении об ошибке.

Пожалуйста, помогите очистить это для меня. Очень расстраивает ... не «Торт» вообще ни от одного слова.

EDIT: Я хотел бы добавить, что я первоначально был использование

$this->ForecastZone->read(null,$id); 

Чтобы захватить данные, но висит & замирания запроса хранится происходит, поэтому я перешел на сырой запрос в надежде, что может изменить что нибудь.

EDIT 2:

Больше вещи я пытался: Добавленные эту линию в верхней части моего контроллера:

var $uses = array('ForecastZone','ForecastZonePolies'); 

А потом пытался сделать что-то «правильный путь», что по-прежнему не. UGH!

$result = $this->ForecastZonePolies->find('all',array('conditions' => array('ForecastZonePolies.forecast_zone_id' => $id))); 

$result = $this->ForecastZone->ForecastZonePolies->find('all',array('conditions' => array('ForecastZonePolies.forecast_zone_id' => $id))); 

Ничего из этого не работает.

+0

Каков адрес, к которому вы обращаетесь? Кроме того, это выглядит как потенциальная инъекция sql. Есть ли причина, по которой вы делаете запрос на запрос вручную? Проверьте приложение/tmp/logs для любых подсказок. – tigrang

+0

Я прибегал к ручному запросу, потому что $ this-> ForecastZone-> read (null, $ id); не выполняется так же, как это делает $ this-> ForecastZone-> query(). – DirtyBirdNJ

+1

Сделайте 'debug (Inflector :: tableize ('ForecastZonePoly'));'. Что вы получаете? Возможно, это не удается сделать его политикой. Edit: На самом деле, похоже, что вы должны были быть doign '$ this-> ForcastZone-> ForcastZonePoly-> find ('all', 'conditions' ...))' или 'find ('list')' в зависимости от того, что тебе нужно. Неясно.Попробуйте очистить кеш в tmp dir – tigrang

ответ

0

Сначала я проверю приложение/tmp/logs/error.log и приложение/tmp/logs/debug.log. Если это действительно внутренняя ошибка, вы должны получить подробную информацию.

Из-за странного искажения я предлагаю вам добавить Router :: parseExtensions ('html') в ваше приложение/config/routes.php, чтобы убедиться, что это не проблема с перенаправлением.

Смежные вопросы