我在我的应用程序(HABTM)中有桌面成员和公司的关系,成员可以有很多公司,公司可以有很多成员,但成员可以没有公司,公司必须至少有一个构件。
所以,当我创建一个公司时,它会显示成员的字段(多选字段),我想只自动选择创建该公司的成员为强制性,而不允许用户选择。
使用bake,cake为多个选择生成此代码:
echo $this->Form->input('members._ids', ['options' => $members]);
并显示所有成员,我尝试了以下内容:
$id = $this->request->session()->read('Auth.User')['id'];
捕获正在创建公司的用户,然后:
echo $this->Form->input('members._ids', ['options' => $members, 'default' => $id, 'type' => 'hidden']);
但是创建公司但没有与用户关联,我该怎么做?
提前致谢!
答案 0 :(得分:2)
要将其保留在表单中,您可以尝试将$ id设置为值而不是默认,但这不是推荐的方式,因为表单值,即使它是隐藏的,可以由用户/成员更改。由于您只想设置登录成员,因此可以在保存公司之前在controller中执行此操作。
推荐的方式:
// $companiesTable is your table model for the company and $company is the entity you would be creating and patching with the request data from the form
$memberEntity = $companiesTable->Members->get($id);
$company->members = [$memberEntity];
$companiesTable->save($company);