2010-09-05 17 views
0

模板,我产生一个自定义主题复制Symfony的学说:生成模块自定义主题:找不到国际化嵌入式领域

plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default" 

plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/mytheme1" 

我改变了模板匹配我的需求(没有表格,自定义错误显示等)。然而

./symfony doctrine:generate-module --theme=mytheme1 frontend user User 

作品如我所料,如果我添加

$this->embedI18n(array('en','fr')); 

形式类发电机呈现的I18n嵌入形式和。

这是从哪里来的?我如何定制它? i18n嵌入式表单的模板文件位于哪里?

非常感谢, 马西莫

回答

1

首先,它是不超载的插件本身主题最好的主意。插件不应该被触及以允许将来的更新。您可以轻松地在应用程序中重载主题。

其次,你的文章中似乎缺少一些东西:“对于表单类,生成器使用和呈现I18n嵌入表单。”

可能是缺失翻译指标?

+0

是的,有遗漏的东西!它使用表格单元格和表格行,即使我已将它们从我的自定义模板中剥离。我不知道他们来自哪里 – Massimo 2010-09-08 01:18:22

+0

在我修复了所有这些东西之后,我会将我的主题移到我的项目中。不过感谢您的建议! – Massimo 2010-09-08 01:20:04

+0

它是“[”和“]”之间的“T”字母吗?如果它只是一个缺失的翻译指示器(在factories.yml中配置和启用)。 – 2010-09-08 16:30:41

1

该模板在i18n窗体的widgetSchema的格式化程序中定义。默认情况下,它被设置为sfWidgetFormSchemaFormatterTable其中包含你在找什么的定义:

class sfWidgetFormSchemaFormatterTable extends sfWidgetFormSchemaFormatter 
{ 
    protected 
    $rowFormat  = "<tr>\n <th>%label%</th>\n <td>%error%%field%%help%%hidden_fields%</td>\n</tr>\n", 
    $errorRowFormat = "<tr><td colspan=\"2\">\n%errors%</td></tr>\n", 
    $helpFormat  = '<br />%help%', 
    $decoratorFormat = "<table>\n %content%</table>"; 
} 

您可以通过编辑您的国际化形式类的初始化改变这一点。例如,如果你想在列表中显示的字段:

public function setup() 
{ 
    parent::setup(); 

    $formatter = new sfWidgetFormSchemaFormatterList($this->getWidgetSchema()); 

    $this->getWidgetSchema()->addFormFormatter('list', $formatter); 
    $this->getWidgetSchema()->setFormFormatterName('list'); 
} 

您也可以定义自己的格式化从sfWidgetFormSchemaFormatter继承以匹配您的布局偏好。