如何配置generator.yml以便它将使用一个表单 “新”动作,以及另一个“编辑”动作?
答案 0 :(得分:3)
两种方式:
<强> 1。编写自己的管理配置
如果两种形式之间存在显着差异,则这是首选方法。该文件位于模块的config文件夹中。 “moduleName”应替换为模块的名称。
class moduleNameGeneratorConfiguration extends BaseModuleNameGeneratorConfiguration
{
public function getForm($object = null, $options = array())
{
$options = array_merge($this->getFormOptions(), $options);
if ($object && $object->exists())
{
return new EditModelForm($object, $options);
}
else
{
return new NewModelForm($object, $options);
}
}
}
<强> 2。将表格中的逻辑分开
如果存在显着差异,这可能会变得混乱,但您可以根据需要在表单内部调用isNew
,例如。
public function configure()
{
if ($this->isNew())
{
//do new stuff
}
else
{
//do edit stuff
}
}
答案 1 :(得分:1)
我可以使用
以相同的形式在“新”和“编辑”中执行不同的操作$this->isNew()
答案 2 :(得分:0)
您可以创建与前端应用程序相同的目录结构,它将覆盖生成器表单。例如,在Backend模块中创建indexSuccess.php文件。加载该模块时,它将立即使用indexSuccess.php文件。
最简单的方法是从/ cache文件夹中复制数据 - 基本上复制生成的后端模块文件,并按照您想要的方式修改它们。
答案 3 :(得分:0)
您可以根据操作指定表单中可用的字段,请参阅The form section only exists as a fallback for the edit and new sections。
例如:
generator:
param:
form:
display:
group1: [name, description]
edit:
title: Edit item %%name%%
fields:
#group1: [name, description] -> inheritance
group2: [only_displayed_when_editing_field]
new:
title: New item
fields:
group1: [name] #override