У меня проблема с моим приложением 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)));
Ничего из этого не работает.
Каков адрес, к которому вы обращаетесь? Кроме того, это выглядит как потенциальная инъекция sql. Есть ли причина, по которой вы делаете запрос на запрос вручную? Проверьте приложение/tmp/logs для любых подсказок. – tigrang
Я прибегал к ручному запросу, потому что $ this-> ForecastZone-> read (null, $ id); не выполняется так же, как это делает $ this-> ForecastZone-> query(). – DirtyBirdNJ
Сделайте 'debug (Inflector :: tableize ('ForecastZonePoly'));'. Что вы получаете? Возможно, это не удается сделать его политикой. Edit: На самом деле, похоже, что вы должны были быть doign '$ this-> ForcastZone-> ForcastZonePoly-> find ('all', 'conditions' ...))' или 'find ('list')' в зависимости от того, что тебе нужно. Неясно.Попробуйте очистить кеш в tmp dir – tigrang