我的Symfony应用程序中有两个模型。第一个是博客:
Blog:
columns:
name: { type: string(20), notnull: true, unique: true }
title: { type: string(255), notnull: true }
description: { type: string(255), notnull: true }
admin_id: { type: bigint, notnull: true }
relations:
User:
class: sfGuardUser
local: admin_id
...
如您所见,此模型与sfGuardUser具有一对一的关系。我希望这两种注册以一种形式进行。
所以我更改了BlogForm类并在其中使用了embeddedRelation
方法。所以两种形式只是一起出现。问题是他们的看法!用户注册表(嵌入在BlogForm中)看起来像孩子!我不希望这样......我希望字段是同一个缩进。
我的表单视图是这样的:
但我想要这样的事情:
最好的方法是什么?它与FormFormatter有关吗?
答案 0 :(得分:1)
您是否检查过sfWidgetFormSchemaFormatter
或render* method?
我给出了几乎与here相关的答案。我认为这几乎是同一个问题:Removing table headers from embedRelation()
我认为最好的方法是使用sfWidgetFormSchemaFormatter
或render *方法在模板中手动构建表单。
修改强>
关于我已回答here的问题,请尝试添加这样的自定义格式化程序(在lib/widget/sfWidgetFormSchemaFormatterAc2009.class.php
中):
class sfWidgetFormSchemaFormatterAc2009 extends sfWidgetFormSchemaFormatter
{
protected
// this will remove table around the embed element
$decoratorFormat = "%content%";
public function generateLabel($name, $attributes = array())
{
$labelName = $this->generateLabelName($name);
if (false === $labelName)
{
return '';
}
// widget name are usually in lower case. Only embed form have the first character in upper case
if (preg_match('/^[A-Z]/', $name))
{
// do not display label
return ;
}
else
{
return $this->widgetSchema->renderContentTag('label', $labelName, $attributes);
}
}
}
然后将其添加到ProjectConfiguration
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
// ...
sfWidgetFormSchema::setDefaultFormFormatterName('ac2009');
}
}
(信息来自sf website)
如果这不起作用,请在var_dump($name);
之前添加if (preg_match
,并将输出添加到您的问题中。