मैं की तरह तोSymfony 2 एंबेडेड फार्म
$builder->add('parent', new \Company\Bundle\Form\UserObjects\AParentType);
लेकिन जब मैं कोशिश करते हैं और प्रपत्र
if($request->getMethod() == 'POST') {
$form->bindRequest($request);
}
मैं त्रुटि प्राप्त करने के लिए अनुरोध बाँध एक और रूप प्रकार में एक फार्म के प्रकार को एम्बेड कर रहा हूँ
Catchable Fatal Error: Argument 1 passed to Company\Bundle\Entity\UserObjects\User::setParent() must be an instance of Company\Bundle\Entity\UserObjects\AParent, array given, called in /Volumes/Media/Symfony/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 346 and defined in /Volumes/Media/Symfony/src/Company/Bundle/Entity/UserObjects/User.php line 771
ऐसा लगता है कि फ़ॉर्म "एपेंट" ऑब्जेक्ट को एक इकाई के बजाए सरणी के रूप में पास कर रहा है। कोई विचार?
संपादित
User.php
<?php
// src/Company/Bundle/Entity/UserObjects/Users.php
namespace Company\Bundle\Entity\UserObjects;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Company\Bundle\Repository\UserObjects\UserRepository")
* @ORM\Table(name="user")
* @ORM\HasLifecycleCallbacks()
*/
class User implements UserInterface, \Serializable
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $username;
/**
* @ORM\Column(type="string")
*/
protected $password;
/**
* @ORM\Column(type="string")
*/
protected $securityQuestion;
/**
* @ORM\Column(type="string")
*/
protected $securityAnswer;
/**
* @ORM\Column(type="string")
*/
protected $salt;
/**
* @ORM\OneToOne(targetEntity="AParent", inversedBy="user")
*/
private $parent;
public function serialize()
{
return serialize(array(
'username' => $this->getUsername(),
'password' => $this->getPassword(),
'salt' => $this->getSalt(),
'roles' => $this->getRoles(),
));
}
public function unserialize($serializedData)
{
$unserializedData = unserialize($serializedData);
$this->setUsername(isset($unserializedData['username']) ? $unserializedData['username'] : null);
$this->setPassword(isset($unserializedData['password']) ? $unserializedData['password'] : null);
$this->setSalt(isset($unserializedData['salt']) ? $unserializedData['salt'] : null);
}
public function getRoles()
{
return array('ROLE_USER');
}
public function eraseCredentials()
{
return false;
}
public function equals(UserInterface $user)
{
if ($user->getUsername() != $this->getUsername()) {
return false;
}
if ($user->getEmail() != $this->getEmail()) {
return false;
}
return true;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
/**
* Get salt
*
* @return string
*/
public function getSalt()
{
return $this->salt;
}
public function getUsername()
{
return $this->username;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* Set password
*
* @param string $password
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* Set securityQuestion
*
* @param string $securityQuestion
*/
public function setSecurityQuestion($securityQuestion)
{
$this->securityQuestion = $securityQuestion;
}
/**
* Get securityQuestion
*
* @return string
*/
public function getSecurityQuestion()
{
return $this->securityQuestion;
}
/**
* Set securityAnswer
*
* @param string $securityAnswer
*/
public function setSecurityAnswer($securityAnswer)
{
$this->securityAnswer = $securityAnswer;
}
/**
* Get securityAnswer
*
* @return string
*/
public function getSecurityAnswer()
{
return $this->securityAnswer;
}
/**
* Set salt
*
* @param string $salt
*/
public function setSalt($salt)
{
$this->salt = $salt;
}
/**
* Set parent
*
* @param Company\Bundle\Entity\UserObjects\AParent $parent
*/
public function setParent(\DABSquared\ProjectGradesBundle\Entity\UserObjects\AParent $parent)
{
$this->parent = $parent;
if($parent != null) {
$parent->setUser($this);
}
}
/**
* Get parent
*
* @return Company\Bundle\Entity\UserObjects\AParent
*/
public function getParent()
{
return $this->parent;
}
}
public function __construct()
{
}
}
AParent.php
<?php
// src/Company/Bundle/Entity/UserObjects/AParent.php
namespace Company\Bundle\Entity\UserObjects;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Company\Bundle\Repository\UserObjects\AParentRepository")
* @ORM\Table(name="parents")
* @ORM\HasLifecycleCallbacks()
*/
class AParent
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="parent")
*/
private $user;
/**
* @ORM\Column(type="string")
*/
protected $zipCode;
public function __construct()
{
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set user
*
* @param Company\Bundle\Entity\UserObjects\User $user
*/
public function setUser(\Company\Bundle\Entity\UserObjects\User $user)
{
$this->user = $user;
}
/**
* Get user
*
* @return Company\Bundle\Entity\UserObjects\User
*/
public function getUser()
{
return $this->user;
}
/**
* Set zipCode
*
* @param string $zipCode
*/
public function setZipCode($zipCode)
{
$this->zipCode = $zipCode;
}
/**
* Get zipCode
*
* @return string
*/
public function getZipCode()
{
return $this->zipCode;
}
}
UserType.php
<?php
namespace Company\Bundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Doctrine\ORM\EntityRepository;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('username',null,array('label' => 'Username:'))
->add('password',null,array('label' => 'Password:'))
->add('securityQuestion',null,array('label' => 'Security Question:'))
->add('securityAnswer',null,array('label' => 'Security Answer:'))
->add('parent', new \Company\Bundle\Form\UserObjects\AParentType);
}
public function getName()
{
return 'usertype';
}
}
AParent Type.php
<?php
namespace Company\Bundle\Form\UserObjects;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class AParentType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('zipCode',null,array('label' => 'Zip Code:'));
}
public function getName()
{
return 'aparenttype';
}
}
कक्षा के नाम के बाद अनिवार्य नहीं है, आपके पहले कोड स्निपेट में? – greg0ire
कुछ और कोड देखने में भी मददगार होगा। यह हमें बहुत कुछ नहीं बताता है। – Flukey
@ greg0ire मुझे ऐसा नहीं लगता है क्योंकि फ़ॉर्म पृष्ठ पर ठीक बनाता है और प्रदर्शित करता है, लेकिन जब फॉर्म पोस्ट किया जाता है और उपयोगकर्ता ऑब्जेक्ट को बाइंडर होता है तो यह त्रुटि होती है। – Daniel