Symfony2 - simplecms:如何添加额外数据?

时间:2014-05-07 10:22:12

标签: php symfony symfony-cmf

我的表单中有一个来自simplecms的实体页面的问题 我想在数组Extras中添加一个项目,所以我在formtype中添加了它:

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Cmf\Bundle\SimpleCmsBundle\Doctrine\Phpcr\Page;

class PageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title', 'text', array(
                'label' => 'Titre',
                'attr' => array('placeholder' => 'Titre complet de la page')
            ))
        ->add('name', 'text', array(
            'label' => 'Label',
            'attr' => array('placeholder' => 'nom-simplifie-de-la-page')
            ))
        ->add('body', 'ckeditor')
        ->add('locale', 'hidden')
        ->add('publishable')
            ->add('extras_link','text', array(
                'property_path' =>"extras['link']",
            ));                        
}

vars在类Page(我没有必要覆盖它)和函数removeExtra()和addExtra()(我的表单营养必需)

/**
 * Add a single key - value pair to extras
 *
 * @param string $key 
 * @param string $value - if this is not a string it is cast to one
 */
public function addExtra($key, $value)
{
    $this->extras[$key] = (string) $value;
}

/**
 * Remove a single key - value pair from extras, if it was set.
 *
 * @param string $key
 */
public function removeExtra($key)
{
    if (array_key_exists($key, $this->extras)) {
        unset($this->extras[$key]);
    }
}

表单正在运行,但是当我提交时,它找到removeExtra()但不是addExtra()

  

“找到公共方法”removeExtra()“,但没有在类Symfony \ Cmf \ Bundle \ SimpleCmsBundle \ Doctrine \ Phpcr \ Page”

上找到公共“addExtra()”

有人已经有这个问题吗?或者知道如何在附加内容中添加数据? THX(对不起我的英文)

1 个答案:

答案 0 :(得分:1)

遗憾的是,这是表单层的限制。寻找正确方法的逻辑只能找到带有一个参数的加法器。我们最终做的是使用burgov / key-value-form-b​​undle:https://github.com/Burgov/KeyValueFormBundle/

这需要在SeoBundle中启用这样的PR:https://github.com/symfony-cmf/SeoBundle/pull/158

来自Page :: setExtras中的代码我认为这应该已经有效,尽管与SeoBundle上的类似的PR会使它更有效率。