Symfony Form为实体类型定制数组

时间:2015-04-14 16:05:55

标签: arrays forms symfony

在我的Symfony2.6.6项目中,我有一个category实体。我不知道如何正确地说,但是使用doctrine树扩展来创建一个category实体的树,如:

  • 第1类
    • 儿童类别1
    • 儿童类别2
  • 第2类
    • 儿童类别3 ...

现在,在创建用于创建新类别的表单类型时,我想自定义parent字段的数组。

我使用的代码

$builder->add('parent', 'entity', array('class' => 'AcmeBlogBundle:Category', 'property' => 'title'));

只生成一个包含所有标题的数组。但我希望数组值附加一个' - '对于树的每个级别。例如,类别1将是' - 类别1'和儿童类别1将是' - 儿童类别1'。我怎么能这样做?

很抱歉,如果之前有人询问,我也不知道如何搜索。

1 个答案:

答案 0 :(得分:1)

好吧,假设您拥有属性 getLevel(),它将返回您当前项目的级别。然后在您的类别实体文件中,创建一个简单的方法,例如 getIndentedTitle thar将根据其级别返回您的预定义类别。

public function getIndentedTitle() {
    return sprintf(
        '%s %s',
         str_repeat('-', $this->getLevel()),
         $this->getTitle()
    );
}

以下代码将添加与当前类别级别一样多的“ - ”符号,并在其旁边附加其标题。

然后在表单构建器中,您必须指定使用该方法:

$builder->add('parent', 'entity', array('class' => 'AcmeBlogBundle:Category', 'property' => 'indentedTitle'));

有关str_repeat.

的更多信息

希望你明白了。