下記の従業員登録フォームを持っていますが、
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',
));
}
だから私がする必要があるのは、次のオプションが利用可能であるべきだということです、
- 従業員登録の詳細を入力し、ログインを作成します(これはすでに行われています)
- 従業員登録の詳細のみを入力し、そのためのログインを作成する必要はありません。
したがって、2番目のオプションが機能せず、列'username'をnullにすることはできません。この問題を解決するにはどうすればよいですか。