cakePHP - модель, контроллер без соглашения / элемент возвращает значение NULL

1

У меня проблема с 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.

Как я могу это решить?

  • 0
    Вам не нужно var $ name = 'Veranstaltungen'; в вашем контроллере. Также вы настраивали свою базу данных?
  • 0
    да, база данных правильная.
Показать ещё 2 комментария
Теги:
cakephp

3 ответа

2
Лучший ответ

Вы забываете включить свою модель в контроллер. Сделайте это, добавьте поле $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 он больше не устарел и не выдает предупреждение.

  • 0
    Как вы можете видеть, название модели "Veranstaltung" $ использование в контроллере должно загрузить эту модель автоматически.
  • 1
    @Fury, но с условным контроллером должно быть имя VeranstaltungsController вместо VeranstaltungenController , не так ли?
Показать ещё 1 комментарий
0
 <?php
    class VeranstaltungenController extends AppController

    var $uses = array('Veranstaltungen');
    public function index()
    {
        $this->set('veranstaltungen',$this->Veranstaltung->find('all'));
    }
   } 
 ?>  

Попробуйте в своем контроллере

  • 0
    Эта переменная $ использует = 'Veranstaltungen'; не является правильным. Если он хочет добавить больше модели в $ use, тогда что?
0

Вам не нужно var $name = 'Veranstaltungen'; в вашем контроллере.

Также убедитесь, что вы правильно настроили свою базу данных?

Затем попробуйте следующее:

$this->loadModel("Veranstaltungen");
$this->set('veranstaltungen',$this->Veranstaltung->find('all'));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню