我的表单中有一个来自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(对不起我的英文)
答案 0 :(得分:1)
遗憾的是,这是表单层的限制。寻找正确方法的逻辑只能找到带有一个参数的加法器。我们最终做的是使用burgov / key-value-form-bundle:https://github.com/Burgov/KeyValueFormBundle/
这需要在SeoBundle中启用这样的PR:https://github.com/symfony-cmf/SeoBundle/pull/158
来自Page :: setExtras中的代码我认为这应该已经有效,尽管与SeoBundle上的类似的PR会使它更有效率。