我已经成功覆盖了FOSUserbundle的用户类,添加了一堆属性。但是当我尝试添加“类型”属性时,您可以在下面看到,我有以下异常:
属性“Types”和方法“add typ()”/“remove typ()”、“addType()”/“remove type()”、“setTypes()”、“types()”、“__set()”或“__call()”都不存在,并且在类“advert project \ User bundle \ Entity \ User”中具有公共访问权限。
类型是一个单独的实体,与我的托管实体/用户具有多对多关系。
这个想法是在主窗体中插入一个单选按钮窗体。我已经阅读了此处为类似的错误消息提供的许多答案,但没有任何效果。实际上我的情况与此类似(当时@Mick提供的答案)。但是提供的建议在我的情况下不起作用,因为我完全按照那里的建议做了。谁能帮我解决这个问题?请注意,表单正在使用单选按钮表单正确呈现,并且在我点击提交按钮后返回异常。
广告项目/用户捆绑包/实体/用户:
namespace Advertproject\UserBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use Symfony\Component\Validator\Constraints as Assert;
/**
* User
*
* @ORM\Table(name="fos_user")
*@ORM\Entity(repositoryClass="Advertproject\UserBundle\Entity\UserRepository")
*/ class User extensions BaseUser { /** * @var integer * * @ORM\Column(name=“id”, type=“integer”) * @ORM\Id * @ORM\Generated Value(strategy=“AUTO”) */ 受保护$id;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please enter the company name.", groups={"Registration", "Profile"})
* @Assert\Length(
* min=3,
* max=255,
* minMessage="The company name is too short.",
* maxMessage="The company name is too long.",
* groups={"Registration", "Profile"}
* )
*/
protected $companyName;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please enter your phone.", groups={"Registration", "Profile"})
* @Assert\Length(
* min=8,
* max=255,
* minMessage="The phone value is too short.",
* maxMessage="The phone value is too long.",
* groups={"Registration", "Profile"}
* )
*/
protected $phone;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please add details about the person we can contact.", groups={"Registration", "Profile"})
* @Assert\Length(
* min=30,
* max=255,
* minMessage="The details info is too short.",
* maxMessage="The details info is too long.",
* groups={"Registration", "Profile"}
* )
*/
protected $details;
/**
* @var
* @ORM\ManyToMany(targetEntity="Advertproject\UserBundle\Entity\Type", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
protected $types;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;
public function __construct()
{
parent::__construct();
$this->date = new \Datetime();
$this->types = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set companyName
*
* @param string $companyName
* @return User
*/
public function setCompanyName($companyName)
{
$this->companyName = $companyName;
return $this;
}
/**
* Get companyName
*
* @return string
*/
public function getCompanyName()
{
return $this->companyName;
}
/**
* Set phone
*
* @param string $phone
* @return User
*/
public function setPhone($phone)
{
$this->phone = $phone;
return $this;
}
/**
* Get phone
*
* @return string
*/
public function getPhone()
{
return $this->phone;
}
/**
* Set details
*
* @param string $details
* @return User
*/
public function setDetails($details)
{
$this->details = $details;
return $this;
}
/**
* Get details
*
* @return string
*/
public function getDetails()
{
return $this->details;
}
public function setEmail($email)
{
$email = is_null($email) ? '' : $email;
parent::setEmail($email);
$this->setUsername($email);
return $this;
}
public function setEmailCanonical($emailCanonical)
{
$this->emailCanonical = $emailCanonical;
$this->usernameCanonical = $emailCanonical;
}
/**
* Get types
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getTypes()
{
return $this->types;
}
/**
* Set date
*
* @param \DateTime $date
* @return User
*/
public function setDate($date)
{
$this->date = $date;
return $this;
}
/**
* Get date
*
* @return \DateTime
*/
public function getDate()
{
return $this->date;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return User
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Add Type
*
* @param \Advertproject\UserBundle\Entity\Type $type
* @return User
*/
public function addType(Type $type)
{
$this->types[] = $type;
return $this;
}
/**
* Remove types
*
* @param \Advertproject\UserBundle\Entity\Type $types
*/
public function removeType(Type $types)
{
$this->types->removeElement($types);
}
}
广告项目/用户包/表单/类型/注册表单类型:
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('companyName', 'text')
->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
->add('phone', 'text')
->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
))
->add('details', 'textarea')
->add('types', 'entity', array(
'class' => 'APUserBundle:Type',
'property' => 'name',
'required' => true,
'expanded' => true,
'multiple' => false,
))
;
}
广告项目/用户群/实体/类型:
namespace Advertproject\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Type
*
* @ORM\Table(name="type")
* @ORM\Entity(repositoryClass="Advertproject\UserBundle\Entity\TypeRepository")
*/
class Type
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Type
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
}
在您的表单类型中,您使用实体类型作为用户的选择包。
你没有setTypes功能
1)$类型不是您数据库中的字段-mises@ORM\Col
2) 在用户实体中,您希望存储一个值还是多个值?
如果有,就照我上面提议的做。
如果每个用户可以选择多个项目,则Type实体将用作选项列表,并将数据存储在实体UserChoices中。然后将UserChoices作为多对一连接到用户实体。
用于实体之间连接的类中的属性并不总是数据库中的字段,它们指向存储数据的字段
我仍然缺少您的类型实体。
尝试这些事情(一个接一个,每次检查后可能有帮助):
>
接管ManyTo多关系的学说示例之一(在单向或双向之间进行选择)。仅将注释更改为@\ORM…注释。
运行以下命令应用程序/控制台原则:缓存:清除-元数据应用程序/控制台原则:缓存:清除-结果应用程序/控制台原则:缓存:清除-查询应用程序/控制台缓存-清除应用程序/控制台缓存-清除--env=prod
重新启动(如果可能)您的网络服务器
我正在用foUserBundle建立一个网站。我需要编写一些单元测试,但我似乎无法获得正确使用它们的身份验证。我试过几个方法,都没有运气。 Approach 1-在安全设置中链接提供程序,以进行我可以依赖的标准登录。当我这样做时,唯一有效的身份验证是内存提供程序,这意味着我可以使用管理员用户登录,但不能使用fosUserBundle创建的任何用户 security.yml 方法2-我在单元测试的设
我正在定义一个从fos user bundle < code > base user 扩展而来的< code > usualio 实体,具体如下: 但是我得到了这个错误: MappingException:没有为“FOS\UserBundle\Model\User”的实体“UsuarioBundle \ Entity \ Usuario”子类指定标识符/主键。每个实体都必须有一个标识符/主键。 为
我正在将Symfony 3.1与FOSUserBundle一起使用。 我读了Symfony中的文档和集成的FOS,在这里好吧,注册似乎运行良好,并将数据持久化到数据库,但是,如果我尝试登录,我会再次被重定向到作为匿名用户的登录页面。 我检查了Symfony探查器,我可以看到当它被称为path/login\u check(在探查器中)时,用户结果是经过身份验证的,但是在/login\u check阶
嗨,我需要textview点击事件 我使用游标从数据库加载列表数据: activity_list.xml fragment_status.xml
我一直试图利用我以前的单链表来创建双向链表。因此,在Node类中,我添加了以前的节点引用,并更新了类中的和方法,以适应在列表类中的来回。将新节点放在当前节点之后,并将新节点放在列表类中当前节点之前;这是因为我想在DoublyLinked中以升序添加和插入我的值列表类。[这可能听起来很混乱,但我会在下面发布代码]当我测试我的方法[在类]我得到一个空指针异常。 正如我所说,我已经为此工作了几天,所以在
本文向大家介绍推荐10款扩展Web表单的JS插件,包括了推荐10款扩展Web表单的JS插件的使用技巧和注意事项,需要的朋友参考一下 在网站建设中,你可以使用java开发大量酷炫的特效放到你网站上,但我们知道,互联网上也有很多开源的js库和插件可供选择。如果你正在设计用户注册/登录,访客留言或活动报名等自定义表单,那么下面这些插件,可以让你的表单获得更好的用户体验。 JCF Forms 我最喜欢的一