あるコントローラー (テンプレート) から別のコントローラー (フィールド) に ID を取得しようとしています。テンプレートの ID を取得して、フォームの追加 (ビュー) 入力フィールドに自動的に表示しようとしています。
試したセグメントを持つ FieldsController:
$template = $this->Template->find('first');
$current_template = $this->Template->request->data($template['Template']['id']);
フィールドの追加ビューからの入力フィールド:
echo $this->Form->input('templates_id', array('label'=>'Template ID: ', 'type' => 'text', 'default' => $current_template['templates_id']));
では、このタスクを完了するにはどうすればよいでしょうか? 私が試したことがうまくいくと思ったのですが、うまくいきませんでした。
「templates_id」は、「テンプレート」テーブルの「id」にリンクする「フィールド」テーブルの外部キーです。
編集:
LoadModel (以下) を追加し、エラーを吐き出します: 非オブジェクトでメンバー関数 data() を呼び出します。
以下を正しく行っていますか?それとも $this->request->data($template['Template']['id']); である必要がありますか?
$this->loadModel('Template');
$template = $this->Template->find('first');
$current_template = $this->Template->request->data($template['Template']['id']);
編集2:
add 関数を使用した FieldsController:
function add(){
$this->set('title_for_layout', 'Please Enter Your Invoice Headings');
$this->set('stylesheet_used', 'style');
$this->set('image_used', 'eBOXLogo.jpg');
$this->Session->setFlash("Please create your required fields.");
$this->loadModel('Template');
$template = $this->Template->find('first');
//$current_template = $template['Template']['id'];
// right way to do it, but Template is undefined, and says undefined var
//$current_template = $this->request->data['Template']['id'];
// makes sense with the find, no errors, but still doesnt print in form, says undefined var
$current_template = $this->request->data($template['Template']['id']);
if($this->request->is('post'))
{
$this->Field->create();
if ($this->Field->save($this->request->data))
{
if($this->request->data['submit'] == "type_1")
{
$this->Session->setFlash('The field has been saved');
$this->redirect( array('controller' => 'fields','action' => 'add'));
}
if($this->request->data['submit'] == "type_2")
{
$this->Session->setFlash('The template has been saved');
$this->redirect( array('controller' => 'templates','action' => 'index'));
}
}
else
{
$this->Session->setFlash('The field could not be saved. Please, try again.');
}
}
}
add というビューからのフォーム:
<?php
echo $this->Form->create('Field', array('action'=>'add'));
echo $this->Form->create('Field', array('action'=>'add'));
echo $this->Form->input('name', array('label'=>'Name: '));
echo $this->Form->input('description', array('label'=>'Description: '));
echo $this->Form->input('templates_id', array('label'=>'Template ID: ', 'type' => 'text', 'default' => $current_template['templates_id']));//this would be the conventional fk fieldname
echo $this->Form->button('Continue adding fields', array('name' => 'submit', 'value' => 'type_1'));
echo $this->Form->button('Finish adding fields', array('name' => 'submit', 'value' => 'type_2'));
echo $this->Form->end();
?>