在父视图CakePHP中添加子项

时间:2014-07-08 13:25:57

标签: php templates cakephp

我正在尝试在CakePHP的父视图中添加一个子项。 这意味着,我想在课程视图中添加课程。

我尝试通过一个简单的表单助手来做 - 添加一个$ course [' Lesson']:

<div class="lessons form">
<?php echo $this->Form->create($course['Lesson']); ?>
    <fieldset>
        <legend><?php echo __('Add Lesson'); ?></legend>
    <?php
        echo $this->Form->input('name');
        echo $this->Form->input('description');
        echo $this->Form->input('course_id', array(
            'value'=>$course['Course']['id']
            ));
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>

但这似乎并没有。

我在控制器/模型中遗漏了什么?

2 个答案:

答案 0 :(得分:0)

让我们思考课程控制器

//课程控制器

public function add_lesson() {
        if ($this->request->is('post')) {
            $this->Lesson->create();
            if ($this->Lesson->save($this->request->data)) {
                $this->Session->setFlash(__('The Lesson has been saved.'));
                return $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The Lesson could not be saved. Please, try again.'));
            }
        }

    $this->set('courses', $this->Course->find('list'));
}

// add_Lesson查看

<?php echo $this->Form->create('Lesson', array('url' => array('controller'=>'courses', 'action'=>'add_lesson')) ); ?>
    <fieldset>
        <legend><?php echo __('Add Lesson'); ?></legend>
    <?php
        echo $this->Form->input('name');
        echo $this->Form->input('description');
        echo $this->Form->input('course_id');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>

答案 1 :(得分:0)

如果您想使用课程控制器,可以像这样保存数据:

$this->Course->Lesson->save($this->request->data); 

在这种情况下,您需要确保在提交表单后,您的数据结构如下:

array(
      'Course' => array(
                        'id' => 1
                       ),
       'Lesson' => array(
                        'name' => 'name'
                        'description' => 'balbalbala'
                        'course_id' => 1
                       ),
);