0

simplecms のエンティティ Page のフォームに問題があります。配列 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 (私の英語でごめんなさい)

4

1 に答える 1