gpt4 book ai didi

php - 可捕获的 fatal error : Argument 1 passed to . .. 必须是...的实例,数组给定

转载 作者:可可西里 更新时间:2023-10-31 22:46:18 24 4
gpt4 key购买 nike

我想注册一个用户。在我的数据库中,我有一个表 user,其中有一个 FK player_id,在我的 players 表中,我有一个来 self 的团队表的 FK team_id

这是我的 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';
}
}

如您所见,我添加了指向另一个表单“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';
}
}

在我的 register.html.twig View 中,我有我所有的用户字段和我的玩家字段,如下所示:

<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>

这是我的用户实体类:

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;
}
}

还有我的玩家实体类:

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;
}
}

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

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

更新:

609规则是这样的:

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

PropertyAccessor.php 中的规则 359、360

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

最佳答案

让我们将此错误分开,以便您了解如何找出错误消息。

ContextErrorException: Catchable Fatal Error: 

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

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

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

array given, 

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

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

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

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

这告诉您涉及 Users 类的哪一行。

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

编辑:

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

$object->$setter($value);

$value 应该是一个 Player 对象,而不是一个数组。 $value 来自哪里?

关于php - 可捕获的 fatal error : Argument 1 passed to . .. 必须是...的实例,数组给定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com