我有兩個實體,即User
和Role
,它們之間具有多對多的關係。我生成了一個CRUD,並且它工作正常,但UserType
表單渲染了一個用於爲用戶選擇角色的選擇菜單。因爲我需要複選框insted的下拉的我做了以下修改我UserType
類Symfony「spl_object_hash()期望參數1爲對象,給出的字符串」在編輯時使用表單實體類型
初始
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles');
}
變化
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles',EntityType::class, array('class'=>'AppBundle\Entity\Role',
'multiple'=>true,
'expanded'=>true,));
}
後,這是在這一切開始。我可以創建一個新用戶沒有任何問題,但是當我嘗試編輯
警告:spl_object_hash()預計參數1是對象,給予
字符串錯誤 出現勿使編輯表單。
我試圖解決用戶實體用於登錄我的系統爲此我回到角色數組屬於用戶的問題
。
public function getRoles()
{
$role_data = $this->roles->toArray();
$roles = array();
foreach($role_data as $key=>$role)
{
$roles[] = $role->getName();
}
return $roles;
}
我改變了上面的吸氣如下
public function getRoles()
{
return $this->roles;
}
簡單地返回一個對象現在用戶創建和編輯工作得很好,但由於getRoles
我登錄壞不再是返回一個數組
我真正想要的是使用複選框呈現UserType
表單以選擇角色,但是當我嘗試這樣做時發生了這種情況。到目前爲止,我試圖找到一個沒有成功的解決方案。
您的解決方案完美的作品。但我仍然無法實現形式最初是如何工作的,甚至當getter返回一個數組時 – RanjanaLK
對於一個新用戶'getRoles'返回空數組,noth ING。所以沒有什麼可以按照形式進行處理。這就是表單爲新用戶工作的原因。 –
我明白了,但編輯工作沒有任何問題,當我用' - > add('roles')使用UserType類''。如何使用getter簡單地返回一個數組? – RanjanaLK