0

フォームを送信すると、次の例外が発生します。

Found the public method "addRemote", but did not find a public "removeRemote" on class App\CoreBundle\Entity\Scene

奇妙な考えは、remove メソッドが存在するということです...しかし、私はそれを自分で書きました (私が php app/console doctrine:generate:entities を実行したとき) doctrine はそれを生成しませんでした。私は何か間違ったことをしましたか?

 /**
 * @var array $remote
 *
 * @ORM\Column(name="remote", type="array", nullable=true)
 */
private $remote;


/**
 * Set remote
 *
 * @param array $remote
 * @return Scene
 */
public function addRemote($value, $key=null) {
    if($key!=null){
        $this->remote[$key] = $value;
    }else{
        $this->remote[] = $value;
    }
    return $this;
}

/**
 * Remove remote
 */
public function removeRemote(){
    unset($this->remote);   
}

私も試しました:

    /**
     * Remove remote
     */
    public function removeRemote($key=null){
        if($key!=null && array_key_exists($key, $this->remote)){
            unset($this->remote[$key]);
        }
        unset($this->remote);

        return $this;
    }
4

1 に答える 1

2

これよりも大きな問題があります。あなたはフォームを悪用しています:)

Add.. および Remove... メソッドは、コードに従って列ではなく、リレーションに使用する必要があります。また、addremoveメソッドの両方が、追加または削除されるパラメーターを受け入れる必要があります。

それでも配列が必要な場合は、getRemotes() メソッドが key=>value 配列を返す必要があります。choiceAdder と Remover は、ユーザーがフォーム タイプで選択したものに基づいて、後でそのキーを取得します。

于 2013-05-21T16:59:37.287 に答える