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 (私の英語でごめんなさい)