为什么 Symfony 寻找 "addWooklyExercise()" 而不是 "addWeeklyExercise()"

Why does Symfony look for "addWooklyExercise()" instead of "addWeeklyExercise()"

根据客户要求,我将实体文本字段 (weekly_exercise) 更改为 1:n 关系。到目前为止一切正常,但是当试图保存表单时,Symfony 会查找 "changed" 方法名称。

这是我收到的错误消息

Neither the property "weekly_exercise" nor one of the methods "addWooklyExercise()"/"removeWooklyExercise()", "setWeeklyExercise()", "weeklyExercise()", "__set()" or "__call()" exist and have public access in class "XXX\CourseBundle\Entity\Course".

当然 "addWooklyExercise()"/"removeWooklyExercise()" 不存在。我可以将它们放入并代理到真正的方法,但这只会是一个丑陋的 hack。

我查看了我的所有文件,但找不到任何可能导致此问题的内容。

我正在使用 Symfony 2.5.7,因为我的客户不允许我更新!!

问题涉及的文件https://gist.github.com/mhauptma73

编辑:

出于某种原因,方法

public function addWooklyExercise(\BDA\CourseBundle\Entity\CourseWeeklyExercise $weeklyExercise)
{

    $this->__initializer__ && $this->__initializer__->__invoke($this, 'addWooklyExercise', array($weeklyExercise));

    return parent::addWooklyExercise($weeklyExercise);
}

正在缓存代理中添加。不过也有正确拼写的方法,在拼错之前。

看起来你在某处有错字,可能是你的实体,你的表单类型或在模板中输出表单时。尝试在整个 src/ 目录中搜索 wookly,您可能会找到它。

遵循命名约定,例如当您为 oneToMany 添加 属性 时它是复数,对于添加或删除方法将其更改为单数。

protected $tags;

public function addTag(Tag $tag)
{
    //...
}

public function removeTag(Tag $tag)
{
    // ...
}

查看更多详细信息阅读此文档: http://symfony.com/doc/2.7/form/form_collections.html#form-collections-new-prototype