如何使用a2lix转换扩展在服务器端验证管理字段的多维数组名称?

时间:2017-02-15 09:54:10

标签: symfony a2lix-translation

我有两张表content_pagecontent_page_translations

当我构建表单时,生成的表单字段名称是这样的: content_page[translations][en][pageTitle]

现在,让我知道如何使用此扩展程序管理多维数组服务器端验证?

2 个答案:

答案 0 :(得分:3)

请使用symfony 3了解我的解决方案。

在config目录中创建validation.yml文件,其中包含以下代码行:

AppBundle\Entity\ContentPages:
properties:
    status:
        - NotBlank: 
            message: cms.status.not_blank
    cmsTranslations:
        - Valid: ~

AppBundle\Entity\ContentPagesTranslation:
properties:
    pageTitle:
        - NotBlank: 
            message: cms.page_title.not_blank
        - Length:
            max: 100
    description:
        - NotBlank: ~
        - Length:
            min: 50        
    metaKeywords:
        - NotBlank: ~        
    metaDescription:
        - NotBlank: ~

在控制器文件的方法中,您可以使用以下代码进行验证:

$entity = new ContentPages();

    $validator = $this->get('validator');
    $errors = $validator->validate($entity);
    if (count($errors) > 0) {
        $errorsString = (string) $errors;
        return new Response($errorsString);
    }

实体文件更改: ContentPages.php

/**
 * @ORM\OneToMany(
 *   targetEntity="ContentPagesTranslation",
 *   mappedBy="object",
 *   cascade={"persist", "remove"}
 * )
 */
private $cmsTranslations;
public function __construct() {
    $this->cmsTranslations = new ArrayCollection();
}
public function getTranslations() {
    return $this->cmsTranslations;
}

答案 1 :(得分:1)

/**
* @Assert\Valid
*/
protected $translations;

不适合你吗?只是好奇。因为它应该是官方答案,据我所知。但是,当我提交所有可翻译字段时,这对我不起作用。它仅在提交任何字段时有效。