3

エンティティ City OneToMany Anagrafic でフォームを保存しようと必死です。「property_path」CityType をフォームに入力したところ、エラーが返されました。

Expected argument of type “object or array”, “string” given

私は間違っていることを理解していません!

class Anagrafic
{
/**
 * @ORM\ManyToOne(targetEntity="City", inversedBy="anagrafics", cascade={"persist"})
 * @ORM\JoinColumn(name="city_id", referencedColumnName="id")
*/
private $city;
//..
//..
class City
{
/**
 * @ORM\OneToMany(targetEntity="Anagrafic", mappedBy="city", cascade={"persist"})
 */
private $anagrafics;
//...
//...
class CityType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('comune', 'hidden', array('property_path' => 'city.id'))
//..
//..
class AnagraficType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('city', new CityType())

編集:不完全な情報で申し訳ありませんが、これは例外です:

CRITICAL - Symfony\Component\Form\Exception\UnexpectedTypeException: 
Expected argument of type "object or array", "string" given (uncaught exception) at
 /var/www/MyBusiness0_1/vendor/symfony/symfony/src/Symfony/Component/Form/Util/PropertyPath.php line 342 


/var/www/MyBusiness0_1/vendor/symfony/symfony/src/Symfony/Component/Form/Util/PropertyPath.php at line 342   
    for ($i = 0; $i <= $lastIndex; ++$i) {
        if (!is_object($objectOrArray) && !is_array($objectOrArray)) {
            throw new UnexpectedTypeException($objectOrArray, 'object or array');
        }
        $property = $this->elements[$i];
4

2 に答える 2

2

問題は、文字列または数値を渡すときに symfony がオブジェクトを予期するため、文字列をオブジェクトに、またはその逆に変換する DataTransformer を実装する必要があることです。

http://symfony.com/doc/master/cookbook/form/data_transformers.html

問題が解決しました!;-)

于 2013-02-23T17:37:07.860 に答える
0

propertyPathオブジェクトまたは配列を期待しているように見えます。したがって、この行は間違っています:

$builder->add('comune', 'hidden', array('property_path' => 'city.id'))

あなたはここを通過city.idしています、そしてそれは文字列であってはなりません。私はSymfonyユーザーではなく、FormBuilderに精通していないため、property_pathオプションの使用方法をマニュアルで調べる必要があります。

ところで。これは教義2とは何の関係もないので、そのタグを削除するのが適切でしょう。

于 2013-02-22T23:01:32.070 に答える