CakePHP HABTM добавлять/редактировать проблемы

У меня следующие отношения:

Версия:

    public $hasAndBelongsToMany = array(
    'Band' => array(
        'className' => 'Band',
        'joinTable' => 'bands_editions',
        'foreignKey' => 'edition_id',
        'associationForeignKey' => 'band_id',
        'unique' => true,
    )
);

Группа:

    public $hasAndBelongsToMany = array(
    'Edition' => array(
        'className' => 'Edition',
        'joinTable' => 'bands_editions',
        'foreignKey' => 'band_id',
        'associationForeignKey' => 'edition_id',
        'unique' => true,
    )
);

BandsController:

public function add()
{
    if($this->request->is('post'))
    {
        $this->Band->create();
        if($this->Band->save($this->request->data))
            doSomething();
        else
            doSomethingElse();
    }
}

public function edit($id = NULL)
{
    $this->Band->id = $id;
    if(!$this->Band->exists())
        throw new NotFoundException(__('Not found'));

    if($this->request->is('post') || $this->request->is('put'))
    {
        if($this->Band->save($this->request->data))
            doSomething();
        else
            doSomethingElse();
    } else {
        $this->request->data = $this->Band->read(NULL, $id);
    }
}

Когда я пытаюсь заполнить Bands с помощью add(), все идет хорошо, но как только я вызываю edit(), Cake останавливается с этой ошибкой: Неустранимая ошибка: вызов функции-члена schema() для не-объекта

При отладке обнаружил, что ошибка вылетает, когда парсер доходит до проверки типа запроса.

В чем моя ошибка?


person HelLViS69    schedule 10.04.2014    source источник


Ответы (1)


Попробуйте это, я не видел, работает ли это

public function edit($id = null){
    if(!$id){
        throw new NotFoundException(__("Invalid Post"));
    }

    $band = $this->Band->findById($id);

    if (!$band) {
        throw new NotFoundException(__('Invalid Post'));
    }

    if ($this->request->is(array('post', 'put'))) {
        $this->Band->id = $id;
        if ($this->Band->save($this->request->data)) {
            doSomething();
        }
        else {
            doDomething();
        }
    }

    if (!$this->request->data) {
        $this->request->data = $Band;
    }
}
person AntonyFalegk    schedule 10.04.2014