CakePHP:在添加新大学时添加默认教师/部门值

时间:2017-03-29 18:49:28

标签: cakephp cakephp-3.0

与CakePHP合作的新程序员,我有3个控制器:大学,学院,部门。

我的表是: 大学(id,name,country_id), 院系(id,name,university_id), 部门(id,name,faculty_id)。

当我添加一个新的大学时,我需要自动创建一个默认值('n / a')作为该大学的Faculty,并为此创建Faculty一个默认值('n / a')作为Department。 在我们的系统中,我们需要大学至少有一个教师和一个教师。因此,如果新大学id = 10,那么在保存之后,我需要用university_i = 10创建一个新的教师(比如faculties.id = 25)。以及faculty_id = 25的新部门。

这是我的代码UniversitiesController添加功能

$university = $this->Universities->newEntity();

if ($this->request->is('post')) {
   $university = $this->Universities->patchEntity($university, $this->request->data);
   if ($this->Universities->save($university)) {
       $this->Flash->success(__('The university has been saved.'));
       return $this->redirect(['action' => 'index']);
   } else {
       $this->Flash->error(__('The university could not be saved. Please, try again.'));
   }
}

请帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,那么在大学或院系列表中你想要一个默认值(列表的第一个值)为(n / a)。如果是这样,我有同样的问题,答案很简单。在您将大学列表作为第一个值的表中,将n / a添加为值,我建议保留它,因为表上的第一个值或SQL结果将显示为默认值。 / p>

在file.ctp的选项列表中,您只需添加这样的值...

echo $this->Form->control('universities', [
                'options' => $universities,
                'title' => 'Select the university',
                'alt' => 'Select the university',
                'label' => 'Select the university',
                'class'=> 'classForOption',
                'empty' => false
            ]);

成为'empty'=>错误你的问题的答案。我希望!

此致

答案 1 :(得分:0)

我找到了解决方案。 in UniversitiesCotroller,

public function add()
{
    $university = $this->Universities->newEntity();
    $faculty->_joinData = $this->Universities->Faculties->newEntity();
    $faculty->_joinData->name = 'N/A';
    $university->dirty('faculties', true);


    if ($this->request->is('post')) {
        $university = $this->Universities->patchEntity($university, $this->request->data);
        if ($this->Universities->save($university, ['associated' => ['Faculties']])) {
            $this->Flash->success(__('The university has been saved.'));
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error(__('The university could not be saved. Please, try again.'));
        }
    }
    $countries = $this->Universities->Countries->find('list');
    $this->set(compact('university', 'countries'));
    $this->set('_serialize', ['university']);
}

在大学add.ctp:

<?= $this->Form->create($university) ?>
    <fieldset>
        <legend><?= __('Add University') ?></legend>
        <?php
            echo $this->Form->input('name');
            echo $this->Form->input('short_name');
            echo $this->Form->input('country_id', ['options' => $countries]);
            echo $this->Form->input('town');
        ?>
    </fieldset>
    <?= $this->Form->button(__('Submit')) ?>
    <?= $this->Form->end() ?>

通过这种方式,当我们添加一所新大学时,它会通过在其院系(“N / A”)下的新条目进行defalut创建。