2015-04-22 2 views
0

У меня проблема в редактировании связанной (BelongsTo) поле ...CakePHP редактирование BelongsTo связанное с ним поле

Class ModelA extends AppModel { 
    public $belongsTo = array ('ModelB'); 

    public $actsAs = array('Containable'); 

    public function getModelA($id){ 
     $modelA = $this->find('all', array('contain' => array('ModelB'),'conditions' => array('ModelA.id' => $id))); 
     if(count($modelA)>0){ 
      $modelA = $modelA[0]; 
     } 
     return $modelA; 
    } 
} 

class ModelAsController extends AppController { 
    public function edit($id = null) { 
     $modelA = $this->ModelA->getModelA($id); 
     $this->set('modelA', $modelA); 
    } 
} 

данных в $ Modela в формате:

array(
    'ModelA' => array(
     ... 
    ), 
    'ModelB' => array(
     ... 
    ) 
) 

До сих пор, все в порядке ...

Но, я застрял с edit.ctp. Мне нужен вход для редактирования поля1 из ModelB, но я получаю пустое поле ввода. Строка кода выглядит следующим образом:

echo $this->Form->input('ModelB.field1'); 

При попытке отладки:

Debugger::log($modelA['ModelB']['field1']); 

то у меня есть правильное значение.

Каким будет окно ввода, заполненное полем 1 ModelB?

ответ

0

FormHelper для пикап данные модели вы должны установить

$this->request->data = $modelA;

в контроллере, в противном случае помощник не имеет ни малейшего представления, где вы скрытые данные :)

(наконечник : обычно вы можете отлаживать вспомогательный код в таких случаях)

+0

Вы правы. Я нашел то же самое. $ this-> data = $ modelA; тоже хорошо. –

Смежные вопросы