我正在使用fos用户捆绑和pugx多用户捆绑.我已经阅读了所有文档,我是Symfony的新手.在pugx多用户包中,每个点都有一个样本,但只有一个:成功注册.
这是我的代码:
class RegistrationController extends BaseController
{
public function registerAction(Request $request)
{
$response = parent::registerAction($request);
return $response;
}
public function registerTeacherAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonTeacher');
}
public function registerStudentAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonStudent');
}
}
Run Code Online (Sandbox Code Playgroud)
问题是->get('pugx_multi_user.registration_manager')返回经理.在fos用户覆盖控制器帮助中,他们得到a form或a form.handler.我很难将这些与pugx_multi_user管理器"链接"起来.
我应该在registerTeacherAction()为教师设置角色时设置什么代码,以及registerStudentAction()为成功注册设置学生角色?
我是Symfony的新手,我正在尝试使用FosUserBundle向用户注册一个ROLE,但我无法管理如何做到这一点.实际上我还集成了PUGXMultiUserBundle,以便为两个不同的角色提供两种不同的形式.谁能帮我?
提前致谢
--UPDATE--
我报告我的代码是为了清楚地解释.我用PUGXMultiUserBundle的指南创建了这个文件
这是我的实体:
//C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\Entity\UserGroundStation.php
<?php
namespace Acme\ManagementBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use PUGX\MultiUserBundle\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="user_GroundStation")
* @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.username.already_used")
* @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="fos_user.email.already_used")
*/
class UserGroundStation extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
Run Code Online (Sandbox Code Playgroud)
这是控制器
C:\BitNami\wampstack-5.4.23-0\frameworks\symfony\src\Acme\ManagementBundle\ControllerRegistrationController.php
<?php
namespace Acme\ManagementBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class RegistrationController extends Controller
{
public function registerUserGroundStationAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('Acme\ManagementBundle\Entity\UserGroundStation');
}
}
Run Code Online (Sandbox Code Playgroud)
抱歉这个愚蠢的问题,但这是我的第一个项目,我觉得有点不对劲.
--update - …
我怀疑如何解决这个问题:
我的这个问题的Symfony2应用程序有两个不同的配置文件,名为'em"Seller"和"Buyer".目标是保留一堆关于"卖方"的属性,另一方面,关于"买方"(电子邮件和密码会做到这一点)并不多.
我意识到让两个不同的实体登录并使用FOSUserBundle进行注册并不容易.还有一些其他的捆绑包,例如PUGXMultiUserBundle,它们"破解"FOSUserBundle,并且不容易配置/实现.
所以我的问题是:使用黑客PUGXMultiUserBundle建议,处理它的实现和配置是否更正确,或者更好地坚持FOSUserBundle,拥有用户实体,以及与"卖方"的一对一关系代表卖方与买方不同的属性的实体?这种方法会有另一个问题,即注册表格应该分为两部分,用于卖方和买方注册(我不知道是否可以/建议使用FOSUserBundle)
我希望你们帮助我做对.干杯:)
我用Symfony2创建了一个Web应用程序,我正在使用PUGX User Bundle和FosUserBundle来管理2个不同的用户.
这是两个用户之一:
/**
* @ORM\Entity
* @ORM\Table(name="user_Operator")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="Username already_used")
* @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="Email already_used")
*/
class UserOperator extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_OPERATOR');
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试注册时,我填写表单,提交,而不是出现:
Warning: in_array() expects parameter 2 to be array, null given in C:\BitNami\wampstack-
5.4.23-0\frameworks\symfony\vendor\friendsofsymfony\user-
bundle\FOS\UserBundle\Model\User.php line 142
Run Code Online (Sandbox Code Playgroud)
第142行如下:
135 public function addRole($role)
{
$role …Run Code Online (Sandbox Code Playgroud)