php 可捕获的致命错误:参数 1 传递给 ... 必须是 ... 的实例,给定数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21052309/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 03:46:59  来源:igfitidea点击:

Catchable Fatal Error: Argument 1 passed to ... must be an instance of ..., array given

phparrayssymfonydoctrineentity

提问by nielsv

I want to register a user. In my database I have a table userwith a FK player_idand in my players table I have a FK team_idfrom my team table.

我想注册一个用户。在我的数据库中,我有一个user带有 FK的表,player_id在我的玩家表中,我有一个team_id来自我的团队表的 FK 。

This is my RegisterType Form:

这是我的 RegisterType 表单:

class RegisterType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('userFirstname', 'text', [
                'label' => 'Given name*',
                'attr'  => [
                    'placeholder' => 'Enter your given name.',
                ],
            ])
            ->add('userSurname', 'text', [
                'label' => 'Family name*',
                'attr'  => ['placeholder' => 'Enter your family name.'],
            ])
            ->add('userType', 'choice', array(
                'choices' => array('E' => 'ENTHOUSIAST', 'P' => 'PLAYER', 'T' => 'TRAINER'),
                'label'   => 'User Type*',
                'attr' => array('placeholder' => 'User Type')
            ))
            ->add('player', new PlayerType())
            ->add('userUsername', 'text', [
                'label' => 'Username*',
                'attr'  => ['placeholder' => 'Enter a username.'],
            ])
            ->add('userEmail', 'email', [
                'label' => 'Email address*',
                'attr'  => ['placeholder' => 'Enter your email address.'],
            ])
            ->add('userPassword', 'repeated', [
                'type'           => 'password',
                'first_name'     => 'password',
                'first_options'  => [
                    'label' => 'Password*',
                    'attr'  => ['placeholder' => 'Enter a password.'],
                ],
                'second_name'    => 'confirm',
                'second_options' => [
                    'label' => 'Password (repeat)*',
                    'attr'  => ['placeholder' => 'Repeat the password.'],
                ],
                'invalid_message' => 'The passwords are not identical.',
            ])
            ->add('btn_register', 'submit', [
                'label' => 'Register',
            ])
        ;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'register';
    }
}

As you can see I've added a link to another form 'PlayerType'. This is my PlayerType Form:

如您所见,我添加了另一个表单“PlayerType”的链接。这是我的 PlayerType 表单:

class PlayerType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('playerLicensenumber', 'text', [
                'label' => 'Your License number*',
                'attr'  => ['placeholder' => 'Enter your license number.'],
            ])
            ->add('playerPosition', 'choice', array(
                'choices' => array('T' => 'Trainer', 'S' => 'Spelverdeler', 'R' => 'Receptie/Hoek', 'L' => 'Libero', 'M' => 'Midden', 'O' => 'Opposite', 'A' => 'All-round'),
                'label'         => 'Position you play at*',
                'attr' => array('placeholder' => 'Enter your play position.')
            ))
            ->add('playerBirthyear', 'text', array(
                'label' => 'Your Birth Year',
                'attr'  => ['placeholder' => 'Enter your birth year.'],
                'required' => false
            ))
            ->add('team', 'text', array(
                'label' => 'You play with*',
                'attr'  => ['placeholder' => 'Enter your team.']
            ))
        ;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'player';
    }
}

And in my register.html.twig view I have all my user fields an my player fields like this:

在我的 register.html.twig 视图中,我有我所有的用户字段和我的播放器字段,如下所示:

<div class="form-group{{ registerForm.player.playerLicensenumber.vars.valid ? '' : class_error }}">
    {{ form_label(registerForm.player.playerLicensenumber, label|default(),
    { "label_attr": { "class": "col-sm-3 control-label"}}) }}
    <div class="col-sm-9">
        {{ form_widget(registerForm.player.playerLicensenumber,
        {"attr": {"class": "form-control"} }) }}
    </div>
    {% if not registerForm.player.playerLicensenumber.vars.valid %}
        <div class="col-sm-offset-3 col-sm-9 has-error">
            <h5><i class="glyphicon glyphicon-warning-sign"></i> <strong>Please fix:</strong></h5>
            {{ form_errors(registerForm.player.playerLicensenumber) }}
        </div>
    {% endif %}
</div>
<div class="form-group{{ registerForm.player.playerBirthyear.vars.valid ? '' : class_error }}">
    {{ form_label(registerForm.player.playerBirthyear, label|default(),
    { "label_attr": { "class": "col-sm-3 control-label"}}) }}
    <div class="col-sm-9">
        {{ form_widget(registerForm.player.playerBirthyear,
        {"attr": {"class": "form-control"} }) }}
    </div>
    {% if not registerForm.player.playerBirthyear.vars.valid %}
        <div class="col-sm-offset-3 col-sm-9 has-error">
            <h5><i class="glyphicon glyphicon-warning-sign"></i> <strong>Please fix:</strong></h5>
            {{ form_errors(registerForm.player.playerBirthyear) }}
        </div>
    {% endif %}
</div>
<div class="form-group{{ registerForm.player.playerPosition.vars.valid ? '' : class_error }}">
    {{ form_label(registerForm.player.playerPosition, label|default(),
    { "label_attr": { "class": "col-sm-3 control-label"}}) }}
    <div class="col-sm-9">
        {{ form_widget(registerForm.player.playerPosition,
        {"attr": {"class": "form-control"} }) }}
    </div>
    {% if not registerForm.player.playerPosition.vars.valid %}
        <div class="col-sm-offset-3 col-sm-9 has-error">
            <h5><i class="glyphicon glyphicon-warning-sign"></i> <strong>Please fix:</strong></h5>
            {{ form_errors(registerForm.player.playerPosition) }}
        </div>
    {% endif %}
</div>
<div class="form-group{{ registerForm.player.team.vars.valid ? '' : class_error }}">
    {{ form_label(registerForm.player.team, label|default(),
    { "label_attr": { "class": "col-sm-3 control-label"}}) }}
    <div class="col-sm-9">
        {{ form_widget(registerForm.player.team,
        {"attr": {"class": "form-control"} }) }}
    </div>
    {% if not registerForm.player.team.vars.valid %}
        <div class="col-sm-offset-3 col-sm-9 has-error">
            <h5><i class="glyphicon glyphicon-warning-sign"></i> <strong>Please fix:</strong></h5>
            {{ form_errors(registerForm.player.team) }}
        </div>
    {% endif %}
</div>

This is my Users Entity Class:

这是我的用户实体类:

class Users
{
    /**
     * @var string
     *
     * @ORM\Column(name="user_username", type="string", length=45, nullable=false)
     */
    private $userUsername;

    /**
     * @var string
     *
     * @ORM\Column(name="user_firstname", type="string", length=45, nullable=false)
     */
    private $userFirstname;

    /**
     * @var string
     *
     * @ORM\Column(name="user_surname", type="string", length=255, nullable=false)
     */
    private $userSurname;

    /**
     * @var string
     *
     * @ORM\Column(name="user_email", type="string", length=255, nullable=false)
     */
    private $userEmail;

    /**
     * @var string
     *
     * @ORM\Column(name="user_type", type="string", nullable=false)
     */
    private $userType;

    /**
     * @var string
     *
     * @ORM\Column(name="user_password", type="string", length=60, nullable=false)
     */
    private $userPassword;

    /**
     * @var string
     *
     * @ORM\Column(name="user_salt", type="string", length=30, nullable=false)
     */
    private $userSalt;

    /**
     * @var string
     *
     * @ORM\Column(name="user_token", type="string", length=45, nullable=true)
     */
    private $userToken;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_created", type="datetime", nullable=false)
     */
    private $userCreated;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_modified", type="datetime", nullable=true)
     */
    private $userModified;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_deleted", type="datetime", nullable=true)
     */
    private $userDeleted;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_lastlogin", type="datetime", nullable=true)
     */
    private $userLastlogin;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_confirmed", type="datetime", nullable=true)
     */
    private $userConfirmed;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_locked", type="datetime", nullable=true)
     */
    private $userLocked;

    /**
     * @var integer
     *
     * @ORM\Column(name="user_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $userId;

    /**
     * @var \VolleyScout\VolleyScoutBundle\Entity\Roles
     *
     * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Roles")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="role_id", referencedColumnName="role_id")
     * })
     */
    private $role;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Teams", inversedBy="user")
     * @ORM\JoinTable(name="user_follows_teams",
     *   joinColumns={
     *     @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="team_id", referencedColumnName="team_id")
     *   }
     * )
     */
    private $team;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Competitions", inversedBy="user")
     * @ORM\JoinTable(name="user_follows_competitions",
     *   joinColumns={
     *     @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="competition_id", referencedColumnName="competition_id")
     *   }
     * )
     */
    private $competition;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->team = new \Doctrine\Common\Collections\ArrayCollection();
        $this->competition = new \Doctrine\Common\Collections\ArrayCollection();
    }


    /**
     * Set userUsername
     *
     * @param string $userUsername
     * @return Users
     */
    public function setUserUsername($userUsername)
    {
        $this->userUsername = $userUsername;

        return $this;
    }

    /**
     * Get userUsername
     *
     * @return string 
     */
    public function getUserUsername()
    {
        return $this->userUsername;
    }

    /**
     * Set userFirstname
     *
     * @param string $userFirstname
     * @return Users
     */
    public function setUserFirstname($userFirstname)
    {
        $this->userFirstname = $userFirstname;

        return $this;
    }

    /**
     * Get userFirstname
     *
     * @return string 
     */
    public function getUserFirstname()
    {
        return $this->userFirstname;
    }

    /**
     * Set userSurname
     *
     * @param string $userSurname
     * @return Users
     */
    public function setUserSurname($userSurname)
    {
        $this->userSurname = $userSurname;

        return $this;
    }

    /**
     * Get userSurname
     *
     * @return string 
     */
    public function getUserSurname()
    {
        return $this->userSurname;
    }

    /**
     * Set userEmail
     *
     * @param string $userEmail
     * @return Users
     */
    public function setUserEmail($userEmail)
    {
        $this->userEmail = $userEmail;

        return $this;
    }

    /**
     * Get userEmail
     *
     * @return string 
     */
    public function getUserEmail()
    {
        return $this->userEmail;
    }

    /**
     * Set userType
     *
     * @param string $userType
     * @return Users
     */
    public function setUserType($userType)
    {
        $this->userType = $userType;

        return $this;
    }

    /**
     * Get userType
     *
     * @return string 
     */
    public function getUserType()
    {
        return $this->userType;
    }

    /**
     * Set userPassword
     *
     * @param string $userPassword
     * @return Users
     */
    public function setUserPassword($userPassword)
    {
        $this->userPassword = $userPassword;

        return $this;
    }

    /**
     * Get userPassword
     *
     * @return string 
     */
    public function getUserPassword()
    {
        return $this->userPassword;
    }

    /**
     * Set userSalt
     *
     * @param string $userSalt
     * @return Users
     */
    public function setUserSalt($userSalt)
    {
        $this->userSalt = $userSalt;

        return $this;
    }

    /**
     * Get userSalt
     *
     * @return string 
     */
    public function getUserSalt()
    {
        return $this->userSalt;
    }

    /**
     * Set userToken
     *
     * @param string $userToken
     * @return Users
     */
    public function setUserToken($userToken)
    {
        $this->userToken = $userToken;

        return $this;
    }

    /**
     * Get userToken
     *
     * @return string 
     */
    public function getUserToken()
    {
        return $this->userToken;
    }

    /**
     * Set userCreated
     *
     * @param \DateTime $userCreated
     * @return Users
     */
    public function setUserCreated($userCreated)
    {
        $this->userCreated = $userCreated;

        return $this;
    }

    /**
     * Get userCreated
     *
     * @return \DateTime 
     */
    public function getUserCreated()
    {
        return $this->userCreated;
    }

    /**
     * Set userModified
     *
     * @param \DateTime $userModified
     * @return Users
     */
    public function setUserModified($userModified)
    {
        $this->userModified = $userModified;

        return $this;
    }

    /**
     * Get userModified
     *
     * @return \DateTime 
     */
    public function getUserModified()
    {
        return $this->userModified;
    }

    /**
     * Set userDeleted
     *
     * @param \DateTime $userDeleted
     * @return Users
     */
    public function setUserDeleted($userDeleted)
    {
        $this->userDeleted = $userDeleted;

        return $this;
    }

    /**
     * Get userDeleted
     *
     * @return \DateTime 
     */
    public function getUserDeleted()
    {
        return $this->userDeleted;
    }

    /**
     * Set userLastlogin
     *
     * @param \DateTime $userLastlogin
     * @return Users
     */
    public function setUserLastlogin($userLastlogin)
    {
        $this->userLastlogin = $userLastlogin;

        return $this;
    }

    /**
     * Get userLastlogin
     *
     * @return \DateTime 
     */
    public function getUserLastlogin()
    {
        return $this->userLastlogin;
    }

    /**
     * Set userConfirmed
     *
     * @param \DateTime $userConfirmed
     * @return Users
     */
    public function setUserConfirmed($userConfirmed)
    {
        $this->userConfirmed = $userConfirmed;

        return $this;
    }

    /**
     * Get userConfirmed
     *
     * @return \DateTime 
     */
    public function getUserConfirmed()
    {
        return $this->userConfirmed;
    }

    /**
     * Set userLocked
     *
     * @param \DateTime $userLocked
     * @return Users
     */
    public function setUserLocked($userLocked)
    {
        $this->userLocked = $userLocked;

        return $this;
    }

    /**
     * Get userLocked
     *
     * @return \DateTime 
     */
    public function getUserLocked()
    {
        return $this->userLocked;
    }

    /**
     * Get userId
     *
     * @return integer 
     */
    public function getUserId()
    {
        return $this->userId;
    }

    /**
     * Set role
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Roles $role
     * @return Users
     */
    public function setRole(\VolleyScout\VolleyScoutBundle\Entity\Roles $role = null)
    {
        $this->role = $role;

        return $this;
    }

    /**
     * Get role
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Roles 
     */
    public function getRole()
    {
        return $this->role;
    }

    /**
     * Add team
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
     * @return Users
     */
    public function addTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
    {
        $this->team[] = $team;

        return $this;
    }

    /**
     * Remove team
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
     */
    public function removeTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
    {
        $this->team->removeElement($team);
    }

    /**
     * Get team
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getTeam()
    {
        return $this->team;
    }

    /**
     * Add competition
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
     * @return Users
     */
    public function addCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
    {
        $this->competition[] = $competition;

        return $this;
    }

    /**
     * Remove competition
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
     */
    public function removeCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
    {
        $this->competition->removeElement($competition);
    }

    /**
     * Get competition
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getCompetition()
    {
        return $this->competition;
    }

    private $player;

    /**
     * Get player
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Players
     */
    public function getPlayer() {
        return $this->player;
    }
    /**
     * Set player
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Players $player
     * @return Users
     */
    public function setPlayer(\VolleyScout\VolleyScoutBundle\Entity\Players $player){
        $this->player = $player;
    }
}

And my Players Entity Class:

还有我的玩家实体类:

class Players
{
    /**
     * @var string
     *
     * @ORM\Column(name="player_name", type="string", length=255, nullable=false)
     */
    private $playerName;

    /**
     * @var string
     *
     * @ORM\Column(name="player_licensenumber", type="string", length=45, nullable=false)
     */
    private $playerLicensenumber;

    /**
     * @var string
     *
     * @ORM\Column(name="player_position", type="string", nullable=false)
     */
    private $playerPosition;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="player_birthyear", type="datetime", nullable=true)
     */
    private $playerBirthyear;

    /**
     * @var integer
     *
     * @ORM\Column(name="player_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $playerId;

    /**
     * @var \VolleyScout\VolleyScoutBundle\Entity\Myteam
     *
     * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Myteam")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="myteam_id", referencedColumnName="myteam_id")
     * })
     */
    private $myteam;

    /**
     * @var \VolleyScout\VolleyScoutBundle\Entity\Teams
     *
     * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Teams")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="team_id", referencedColumnName="team_id")
     * })
     */
    private $team;

    /**
     * @var \VolleyScout\VolleyScoutBundle\Entity\Users
     *
     * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Users")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     * })
     */
    private $user;



    /**
     * Set playerName
     *
     * @param string $playerName
     * @return Players
     */
    public function setPlayerName($playerName)
    {
        $this->playerName = $playerName;

        return $this;
    }

    /**
     * Get playerName
     *
     * @return string 
     */
    public function getPlayerName()
    {
        return $this->playerName;
    }

    /**
     * Set playerLicensenumber
     *
     * @param string $playerLicensenumber
     * @return Players
     */
    public function setPlayerLicensenumber($playerLicensenumber)
    {
        $this->playerLicensenumber = $playerLicensenumber;

        return $this;
    }

    /**
     * Get playerLicensenumber
     *
     * @return string 
     */
    public function getPlayerLicensenumber()
    {
        return $this->playerLicensenumber;
    }

    /**
     * Set playerPosition
     *
     * @param string $playerPosition
     * @return Players
     */
    public function setPlayerPosition($playerPosition)
    {
        $this->playerPosition = $playerPosition;

        return $this;
    }

    /**
     * Get playerPosition
     *
     * @return string 
     */
    public function getPlayerPosition()
    {
        return $this->playerPosition;
    }

    /**
     * Set playerBirthyear
     *
     * @param \DateTime $playerBirthyear
     * @return Players
     */
    public function setPlayerBirthyear($playerBirthyear)
    {
        $this->playerBirthyear = $playerBirthyear;

        return $this;
    }

    /**
     * Get playerBirthyear
     *
     * @return \DateTime 
     */
    public function getPlayerBirthyear()
    {
        return $this->playerBirthyear;
    }

    /**
     * Get playerId
     *
     * @return integer 
     */
    public function getPlayerId()
    {
        return $this->playerId;
    }

    /**
     * Set myteam
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Myteam $myteam
     * @return Players
     */
    public function setMyteam(\VolleyScout\VolleyScoutBundle\Entity\Myteam $myteam = null)
    {
        $this->myteam = $myteam;

        return $this;
    }

    /**
     * Get myteam
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Myteam 
     */
    public function getMyteam()
    {
        return $this->myteam;
    }

    /**
     * Set team
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
     * @return Players
     */
    public function setTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team = null)
    {
        $this->team = $team;

        return $this;
    }

    /**
     * Get team
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Teams 
     */
    public function getTeam()
    {
        return $this->team;
    }

    /**
     * Set user
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Users $user
     * @return Players
     */
    public function setUser(\VolleyScout\VolleyScoutBundle\Entity\Users $user = null)
    {
        $this->user = $user;

        return $this;
    }

    /**
     * Get user
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Users 
     */
    public function getUser()
    {
        return $this->user;
    }
}

My problem is now when I want to submit I get the following error:

我的问题是现在当我想提交时出现以下错误:

ContextErrorException: Catchable Fatal Error: Argument 1 passed to VolleyScout\VolleyScoutBundle\Entity\Users::setPlayer() must be an instance of VolleyScout\VolleyScoutBundle\Entity\Players, array given, called in /Applications/mampstack-5.4.20-0/apache2/htdocs/volleyscout/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php on line 360 and defined in /Applications/mampstack-5.4.20-0/apache2/htdocs/volleyscout/src/VolleyScout/VolleyScoutBundle/Entity/Users.php line 609

UPDATE:

更新:

The 609 rule is this:

609规则是这样的:

public function setPlayer(\VolleyScout\VolleyScoutBundle\Entity\Players $player){
    $this->player = $player;
}

Rule 359, 360 in PropertyAccessor.php

PropertyAccessor.php 中的规则 359、360

if ($reflClass->hasMethod($setter) && $reflClass->getMethod($setter)->isPublic()) {
        $object->$setter($value);

回答by miyasudokoro

Let's take this error apart so you can see how to figure out error messages.

让我们把这个错误分开,这样你就可以看到如何找出错误消息。

ContextErrorException: Catchable Fatal Error: 

This is the type of the error. You can write an error handler to handle these.

这是错误的类型。您可以编写一个错误处理程序来处理这些。

Argument 1 passed to VolleyScout\VolleyScoutBundle\Entity\Users::setPlayer() 
must be an instance of VolleyScout\VolleyScoutBundle\Entity\Players, 

This means that when Users::setPlayer() is called, you have to call it using a Player object in the argument.

这意味着当调用 Users::setPlayer() 时,您必须使用参数中的 Player 对象来调用它。

array given, 

This means that instead of a Player object, there was an array in the argument.

这意味着参数中有一个数组而不是 Player 对象。

called in /Applications/mampstack-5.4.20-0/apache2/htdocs/volleyscout/vendor
/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php 
on line 360

This tells you where the problem is: line 360 of PropertyAccessor.php.

这会告诉您问题出在哪里:PropertyAccessor.php 的第 360 行。

and defined in /Applications/mampstack-5.4.20-0/apache2/htdocs/volleyscout
/src/VolleyScout/VolleyScoutBundle/Entity/Users.php line 609

This tells you what line of the class Users is involved.

这会告诉您涉及用户类的哪一行。

So, all you have to do is change that array on line 360 to a Player object. Then you can move on to the next error.

因此,您所要做的就是将第 360 行的数组更改为 Player 对象。然后你可以继续下一个错误。

EDIT:

编辑:

Because line 360 is being called from somewhere else, you'll have to trace backwards to whatever was calling line 360. In this case, it's this line that's giving you an issue:

因为第 360 行是从其他地方调用的,所以您必须回溯到调用第 360 行的任何内容。在这种情况下,正是这一行给您带来了问题:

$object->$setter($value);

The $valueis supposed to be a Player object, not an array. Where is $valuecoming from?

$value被认为是一个播放器对象,而不是阵列。哪里$value来的?

回答by Hans Blix

Had this problem and it drove me nuts.

有这个问题,它让我发疯。

Once I correctly added this method in the class PlayerTypeextends Abstract Type:

一旦我在类中正确添加了这个方法PlayerTypeextends Abstract Type:

/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Player'
    ));
}

It would know that the array should be casted to the right class. And it worked.

它会知道应该将数组转换为正确的类。它奏效了。