问题描述
我目前正在尝试向我的 EmployeeCrudController 添加克隆操作。
该操作应重定向到 Action::NEW 视图并具有一些预填充值。
但是我不知道如何预填这个表格。
这里是我如何在 EmployeeCrudController 中定义我的操作:
public function configureActions(Actions $actions): Actions
{
$cloneAction = Action::new('Clone','')
->setIcon('fas fa-clone')
->linkToCrudAction('cloneAction');
return $actions->add(Crud::PAGE_INDEX,$cloneAction);
}
这就是我的 cloneAction 的样子,它目前按预期重定向到 Action::NEW,但没有预填充值:
public function cloneAction(AdminContext $context): RedirectResponse
{
$id = $context->getRequest()->query->get('entityId');
$entity = $this->getDoctrine()->getRepository(Employee::class)->find($id);
$clone = new Employee();
$entity->copyProperties($clone);
$clone->setFirstname('');
$clone->setLastname('');
$clone->setEmail('');
$routeBuilder = $this->get(CrudUrlGenerator::class);
$url = $routeBuilder->build([
'Employee_lastname' => 'test','Employee[teamMembershipts][]' => $clone->getTeamMemberships(),])
->setController(EmployeeCrudController::class)
->setAction(Action::NEW)
->generateUrl()
;
return $this->redirect($url);
}
解决方法
您可以使用选项 data 在 easyAdmin 中设置字段的值。
$builder->add('Employee_lastname',null,['data' => $clone->getTeamMemberships()]);
如果您的字段有多个选项,您可以使用 choices 和 choices_value。