Embed a Collection of Forms Error: Could not determine access type for property

后端 未结 8 1302
悲哀的现实
悲哀的现实 2021-02-18 22:34

I am trying to embed collection of Tag forms to Service form, according to this tutorial. Tag and Service entities have many-

相关标签:
8条回答
  • 2021-02-18 23:10

    Based on Symfony 3.3.10

    I actually faced this problem many and many times, finally once i discovered where this problem was coming from, depending on the name you give to your entity property it can happen that the adder and the remover for your collection property aren't exactly what you are expecting.

    Example: Your entity properity name is "foo" and you would expect the adder to be called "addFoo" and remover "removeFoo", but then all of a sudden the "Could not determine access type for property" appear.

    So you start going into fear searching for w/e problems in your code, instead you just have to look this file inside Symfony core files:

    vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php

    Inside this file there's a method called findAdderAndRemover. Go there with your debugger and you will eventually find out that symfony searches for weird name for your adder/remover, they may actually end with "um" or "on" or "us" depending on the language (human language) you used to name them. Since i'm Italian this happen quite often.

    Watch out for that, since the fix may be as simple as changing the name used for your add/remove method inside your entity to make them match with what Symfony core is looking for.

    This happens to me when i use bin/console doctrine:generate:entities to create the methods automatically for me

    0 讨论(0)
  • 2021-02-18 23:14

    Maybe the problem is that Symfony can't access that property?

    If you look at where that exception is thrown (writeProperty method in the PropertyAccessor class) it says it can be thrown:

    If the property does not exist or is not public.

    In the tutorial you mentioned it has property $tags, and method addTag. I'm just guessing here, but maybe there's a convention where it tries to call a method names add($singularForm) and this is failing for you because the property is tagList and the method is addTag.

    I'm not 100% sure, but you could try debugging by setting a stop point in that Symfony method to see why it's being thrown.

    0 讨论(0)
提交回复
热议问题