我有如下的员工登记表,
namespace Hrm\EmployeeBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Hrm\UserBundle\Form\User\UserForm;
class EmpForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('id','hidden');
$builder->add('firs_name', 'text');
$builder->add('middle_name', 'text');
$builder->add('last_name', 'text');
$builder->add('user', new UserForm(), array('required' => false));
}
public function getName()
{
return 'EmpForm';
}
}
我还有一个如下的用户登录表单,
namespace Hrm\UserBundle\Form\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class UserForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add("id","hidden",array("required"=>false));
$builder->add("userName","text",array("label"=>"Username"));
$builder->add("password","password",array("label"=>"Password"));
$builder->add("confirmPassword","password",array("property_path" =>
false,"label"=>"Confirm Password"));
$builder->add("email","email",array("label"=>"Email"));
}
public function getName()
{
return 'user';
}
}
员工 YML 文件如下所示,
Hrm\EmployeeBundle\Entity\Employee:
type: entity
table: employee
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
firs_name:
type: string
length: '255'
default: null
middle_name:
type: string
length: '255'
default: null
last_name:
type: string
length: '255'
default: null
oneToOne:
User:
targetEntity: Hrm\UserBundle\Entity\User
cascade: ["remove", "persist"]
joinColumn:
name: login_id
referencedColumnName: id
nullable: true
lifecycleCallbacks: { }
员工控制器是这样的,
public function addEmployeeAction(Request $request) {
$employee = new Employee();
$user = new User();
$employee->setUser($user);
$form = $this->createForm(new EmpForm(), $employee);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($employee);
$em->flush();
return $this->redirect($this->generateUrl('HrmEmployeeBundle_homepage'));
}
}
return $this->render('HrmEmployeeBundle:Pages:add.html.twig', array(
'form' => $form->createView(), 'status' => 'addEmployee',
));
}
所以我需要做的是以下选项应该可用,
- 填写员工注册详细信息并创建登录名(这已经完成)
- 仅填写员工注册详细信息,无需为此创建登录信息。
所以第二个选项对我不起作用,它说 Column 'username' cannot be null 我怎样才能摆脱这个问题?