2014-04-10 2 views
0

У меня есть следующие отношения: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); 
    } 
} 

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

Отладка, я обнаружил, что ошибка запущена когда парсер достигает отметки о типе запроса.

Какая у меня ошибка?

ответ

0

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

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; 
    } 
} 
+0

Та же проблема ... – HelLViS69