与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.'));
}
}
请帮忙吗?
答案 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创建。