Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Symfony2:编辑可翻译实体的1个表单

Symfony2:编辑可翻译实体的1个表单
EN

Stack Overflow用户
提问于 2011-11-16 15:43:03
回答 3查看 4.1K关注 0票数 12

我有一个使用doctrine2的可翻译行为的可翻译实体。

我正在尝试构建一个如下所示的表单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   | French |English| Spanish |
+--+--------|       |---------+------------+
|                                          |
| name:  [___my_english_name___]           |
|                                          |
| title: [___my_english_title__]           |
|                                          |
+------------------------------------------+

Order:  [___1___]
Online: (x) Yes
        ( ) No

因此,基本上,对象的order和online属性是不可翻译的,name & title属性具有可翻译的行为。

如果我的绘图不清楚:表单在每个区域设置中包含1个制表符,其中包含可翻译字段。

我遇到的问题是,默认情况下,Symfony2将一个表单绑定到一个实体,但是可翻译行为原则迫使我在每个地区都有一个实体。就个人而言,理论行为很好(我喜欢它),但我无法制作一个允许我在所有地区编辑实体的表单--以相同的形式。

到目前为止,我已经完成了主要的表单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
namespace myApp\ProductBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

/**
 * Form for the productGroup.
 */
class ProductType extends AbstractType
{
    /**
     * Decide what field will be present in the form.
     *
     * @param FormBuilder $builder FormBuilder instance.
     * @param array       $options Custom options.
     *
     * @return null;
     */
    public function buildForm(FormBuilder $builder, array $options)
    {
        //Todo: get the available locale from the service.
        $arrAvailableLocale = array('en_US', 'en_CA', 'fr_CA', 'es_ES');

        //Render a tab for each locale
        foreach ($arrAvailableLocale as $locale) {
            $builder->add(
                'localeTab_' . $locale,
                new ProductLocaleType(),
                array('property_path' => false, //Do not map the type to an attribute.
                     ));
        }


        //Uni-locale attributes of the entity.
        $builder
            ->add('isOnline')
            ->add('sortOrder');


    }

    /**
     * Define the defaults options for the form building process.
     *
     * @param array $options Custom options.
     *
     * @return array Options with the defaults values applied.
     */
    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'myApp\ProductBundle\Entity\Product',
        );
    }

    /**
     * Define the unique name of the form.
     *
     * @return string
     */
    public function getName()
    {
        return 'myapp_productbundle_producttype';
    }
}

和制表符表单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

namespace MyApp\ProductBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

use invalidArgumentException;

/**
 * Form for the productGroupLocale tabs.
 */
class ProductLocaleType extends AbstractType
{
    /**
     * Decide what field will be present in the form.
     *
     * @param FormBuilder $builder FormBuilder instance.
     * @param array       $options Custom options.
     *
     * @return null;
     */
    public function buildForm(FormBuilder $builder, array $options)
    {


        $builder->add('name', 'text', array('data' => ???));
        $builder->add('title', 'text', array('data' => ???));

    }

    /**
     * Define the defaults options for the form building process.
     *
     * @param array $options Custom options.
     *
     * @return array Options with the defaults values applied.
     */
    public function getDefaultOptions(array $options)
    {
        return array(
            //'data_class' => 'MyApp\ProductBundle\Entity\Product',
            'name' =>  '',
            'title' => '',
        );
    }

    /**
     * Define the unique name of the form.
     *
     * @return string
     */
    public function getName()
    {
        return 'myapp_productbundle_productlocaletype';
    }
}

但正如您所看到的,我不知道如何从转换后的实体获取name和title值,也不知道如何在表单提交后将它们持久化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-19 16:57:38

如果您使用gedmo extensions,那么Translatable并不意味着要为每个请求处理多个翻译。尝试使用knplabs alternative可能是以更通用的方式处理它的更好选择。

票数 6
EN

Stack Overflow用户

发布于 2012-11-29 08:58:25

您可能会对TranslationFormBundle感兴趣,它为DoctrineTranslatable扩展添加了一种表单类型。

票数 4
EN

Stack Overflow用户

发布于 2011-12-13 21:01:58

我已经检查了Translator扩展,即使它很有趣,它也不符合我们的需求。(基本上,我们找到的所有示例都要求我们更改站点区域设置,以便在另一个区域设置中编辑实体。我不懂中文,我也不希望我的界面是中文的,但我确实有一个翻译,我必须复制/粘贴。解释这一点似乎很奇怪,因为它在你会发现的每一个实体CMS中都是非常基本的,但我看起来使用Symfony来实现这种CMS功能有点复杂。)

因此,我们开发了一个解决方案,并构建了一个我们决定共享的BreadGeneratorBundle:https://github.com/idealtech/BreadGeneratorBundle

在发表这篇文章的时候,它还在开发中,但它可以用作CrudGenerator的替代品,以便为可翻译的实体生成表单。

我们还设法使用了Gedmo扩展--即使Gediminas说它不是用来处理多个翻译的;)

希望这能对某些人有所帮助!:)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8154379

复制
相关文章
【翻译】编写可升级的智能合约
当使用OpenZeppelin Upgrades编写可升级合约时,有一些在编写Solidity代码时需要记住一些注意事项。
Tiny熊
2021/01/14
2.5K0
翻译 | 玩转 React 表单 —— 受控组件详解
原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 译者:小 B0Y 校对者:珂珂君 本文涵盖以下受控组件: 文本输入框 数字输
iKcamp
2018/01/04
11.5K0
自定义表单编辑器
其实这个编辑器要想做的很好的话估计会很费劲(图片,大段文本,绝对定位,样式,自定义INPUT组件、页面脚本等各种复杂的功能),目前只是做了一个雏形出来,最终的目的是为了能够在线的编辑自定义表单并且让流程可以使用这个自定义表单。做复杂了还需要结合具体的项目来修改,否则量实在是太大了。
前Thoughtworks-杨焱
2021/12/07
8900
自定义表单编辑器
【自然框架】之 “表单控件”与“实体类”
      对于简单的添加、修改,也就是没有什么业务逻辑的那种,表单控件的工作步骤是这样的,以添加数据为例。这个不用写什么代码,点点鼠标就可以搞定了。       但是对于复杂的业务逻辑的需求,就不能
用户1174620
2018/02/26
8670
【自然框架】之 “表单控件”与“实体类”
翻译 | 可重入与线程安全
  在整个文档中,术语:「可重入和线程安全」用于标记类和函数,以表示它们如何在多线程应用程序中使用:
Qt君
2020/03/19
1.1K0
翻译 | 可重入与线程安全
Android开发(3) 可滚动的录入表单演示
实现这样的布局一定要用到RelativeLayout 相对布局,我们这样指定我的布局。
张云飞Vir
2020/03/16
1.2K0
顶级好用的 React 表单设计生成器,可拖拽生成表单
React 前端开发中,表单组件是排在前三的高频使用的组件,如何快速构建表单,节省力气,避免重复造轮子呢,选择一款适合自己的前端表单设计生成器就非常重要了。本文介绍 3 款顶级好用的 React 表单设计器,其中最后一款卡拉云,是新一代低代码开发工具,不仅能自动生成各类表单,还可以拖拽生成其他常见的前端组件,一行代码连接前后端数据,可快速接入数据库/api。它是表单设计器的超集,可直接生成属于你的后台管理工具,无敌好用。
蒋川@卡拉云
2022/06/01
8.5K0
顶级好用的 React 表单设计生成器,可拖拽生成表单
PHP表单提交参数验证类(可修改)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * 表单验证类(参考 原ci CI
用户7657330
2020/08/14
3.4K0
机器翻译界的BERT:可快速得到任意机器翻译模型的mRASP
今天给大家介绍EMNLP2020的一篇关于多语言翻译新范式的工作multilingual Random Aligned Substitution Pre-training (mRASP)[1],核心思想就是打造“机器翻译界的BERT”,通过预训练技术再在具体语种上微调即可达到领先的翻译效果,其在32个语种上预训练出的统一模型在47个翻译测试集上取得了全面显著的提升。
godweiyang
2021/04/08
1.6K0
机器翻译界的BERT:可快速得到任意机器翻译模型的mRASP
Java模拟表单post提交,可支持图片上传
/** * 模拟表单post * * @param textMap 文本域 * @param fileMap 文件 * */ public static String postForm(String urlStr, Map<String, String> textMap, Map<String, String> fileMap) throws IOException { String res = ""; HttpURLConnection conn = null; In
用户1503405
2021/09/23
1.3K0
(翻译)LearnVSXNow! #15- 创建简单的编辑器-基础
在了解了菜单和命令之后,我们接下来的几篇文章将以自定义编辑器为主题。在开发程序的时候,我们可以用文本编辑器来编写程序代码,并且实际上我们可以用文本编辑器完成所有的开发工作,但我们通常不这么做,因为在visual studio中有很多可以提高我们效率的编辑器,例如winforms编辑器和asp.net的页面编辑器。
明年我18
2019/09/18
7350
(翻译)LearnVSXNow! #15- 创建简单的编辑器-基础
(翻译)LearnVSXNow! #16- 创建简单的编辑器-2
(LearnVSXNow又开始继续翻译了,为了提高翻译速度,不再对每句话进行翻译,并且会用自己的理解来代替不好翻译的句子。理解不一定正确,见谅。)
明年我18
2019/09/18
8570
(翻译)LearnVSXNow! #16- 创建简单的编辑器-2
vue3+ElementPlus 表单编辑与查看模式切换的应用
具体实现如下:当flag=true时候展示el-input输入框(v-if="row.flag")
流年Felix
2023/08/08
1.2K0
可扩展的Web架构和分布式系统(翻译)
原文:Scalable Web Architecture and Distributed Systems
程序员小王
2019/06/03
1K0
Atom飞行手册翻译: 2.4 编辑和删除文本
到目前为止,我们介绍了一些用于在文件中移动和选择区域的方法,现在让我们真正来修改一些文本吧。很显然你可以通过打字的方式来输入字符,但是有另一些方法使删除和处理字符变得更简捷易用。
ApacheCN_飞龙
2022/11/27
6470
Atom飞行手册翻译: 2.4 编辑和删除文本
结构建模设计——Solidworks软件之草图几何关系绘制与草图编辑功能总结(裁剪实体、转换实体引用、等距实体)
        上一博文练习了使用草图工具绘制常见如矩形、圆、槽、圆弧、倒角等,都是单独的个体,那么,本次博文学习下草图几何关系的绘制,包括:重合、中点、平行、相等、共线、相切、对称,草图编辑功能包括:裁剪实体、转换实体引用、等距实体。同样伴随实战练习,一起熟悉了解下这些功能。
Winter_world
2022/05/26
1.8K0
结构建模设计——Solidworks软件之草图几何关系绘制与草图编辑功能总结(裁剪实体、转换实体引用、等距实体)
django 1.8 官方文档翻译: 5-1-1 使用表单
除非你计划构建的网站和应用只是发布内容而不接受访问者的输入,否则你将需要理解并使用表单。
ApacheCN_飞龙
2022/11/27
4.3K0
跨境外贸可翻译客服系统源码实现,访客消息可翻译为中文,客服消息可以转为外语发送
要实现跨境外贸的可翻译客服系统(gofly.v1kf.com),我们需要一个能够将多种语言互相转换的翻译 API。常用的翻译 API 包括 Google Translate API、Microsoft Translator API 等。在本示例中,我以 百度翻译 API 为例进行说明。
唯一Chat
2023/02/28
3680
跨境外贸可翻译客服系统源码实现,访客消息可翻译为中文,客服消息可以转为外语发送
翻译神器 | 不会外语也可环游全球
3月29日,谷歌翻译在APP Store正式更新了5.8.0版本,中国用户可以直接使用谷歌翻译APP的全部功能。也就是说现在,在中国的用户无须梯子,也能正常使用该应用了,新版本中的黑科技--摄像头即时翻译,AR效果的实时翻译哦,先看一下宣传视频吧,主播嗓音我给满分!
用户2559057
2018/08/27
4050
翻译神器 | 不会外语也可环游全球
django 1.8 官方文档翻译:5-1-2 表单API
在这个字典中,键为字段的名称,它们对应于表单类中的属性。值为需要验证的数据。它们通常为字符串,但是没有强制要求必须是字符串;传递的数据类型取决于字段,我们稍后会看到。
ApacheCN_飞龙
2022/11/27
2.8K0

相似问题

原则中的版本控制可翻译实体(symfony2)

10

Symfony2可翻译选择语言/跳过翻译

10

使用DoctrineExtensions可翻译的翻译克隆原则实体

110

未找到默认实体翻译的翻译表单

19

可翻译的Symfony2不使用连接

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文