У меня проблема с cakePHP.
Это моя модель:
<?php
class Veranstaltung extends AppModel
{
var $name = 'Veranstaltung';
var $useTable = 'veranstaltungen';
}
?>
и это мой контроллер:
<?php
class VeranstaltungenController extends AppController
{
var $name = 'Veranstaltungen';
public function index()
{
$this->set('veranstaltungen',$this->Veranstaltung->find('all'));
}
}
?>
но $this->Veranstaltung
Возвращает null.
Как я могу это решить?
Вы забываете включить свою модель в контроллер. Сделайте это, добавьте поле $uses
в ваш контроллер, который является типом array
:
class VeranstaltungenController extends AppController
{
public $uses = array('Veranstaltung');
public function index()
{
$this->set('veranstaltungen',$this->Veranstaltung->find('all'));
}
}
Если по-прежнему возникает проблема, может потребоваться использование
App::uses('Veranstaltung', 'Model');
перед определением класса контроллера.
И, пожалуйста, забудьте о клавиатуре var
, потому что это только для обратной совместимости с PHP4.
Чтобы поддерживать обратную совместимость с PHP 4, PHP 5 все равно согласится с использованием ключевого слова
var
в объявлениях свойств вместо (или в дополнение к)public
,protected
илиprivate
. Однако var больше не требуется. В версиях PHP от 5.0 до 5.1.3 использованиеvar
считалось устаревшим иE_STRICT
предупреждениеE_STRICT
, но поскольку PHP 5.1.3 он больше не устарел и не выдает предупреждение.
VeranstaltungsController
вместо VeranstaltungenController
, не так ли?
<?php
class VeranstaltungenController extends AppController
var $uses = array('Veranstaltungen');
public function index()
{
$this->set('veranstaltungen',$this->Veranstaltung->find('all'));
}
}
?>
Попробуйте в своем контроллере
Вам не нужно var $name = 'Veranstaltungen';
в вашем контроллере.
Также убедитесь, что вы правильно настроили свою базу данных?
Затем попробуйте следующее:
$this->loadModel("Veranstaltungen");
$this->set('veranstaltungen',$this->Veranstaltung->find('all'));