Link 到不同 CRUD 控制器的某些操作
Link to some action of a different CRUD controller
对于 link 在使用 EasyAdmin 4.x
制作的 CRUD 控制器中的新操作,对于另一个具有 OneToMany 关系的 CRUD 控制器中的操作,是否有任何解决方法?
class FirstEntityCrudController extends AbstractCrudController
{
...
public function configureActions(Actions $actions): Actions
{
return $actions
->add(Crud::PAGE_INDEX, Action::new('add-second-entity','Add a second entity')
->linkToCrudAction(Action::NEW ???)
)
;
}
}
The docs说我可以用:
linkToCrudAction(): to execute some method of the current CRUD controller;
但似乎没有关于如何“执行不同 CRUD 控制器的某些方法”的说明。
注意:
有一个偷偷摸摸的方法,但它似乎不健康:
->linkToUrl('the url to the desired action')
使用:
- PHP 8.1
- Symfony 5.4
- EasyAdmin 4.x
根据 @Ruban 的评论,正如 the docs 提到的那样,我们可以使用 [=11= 为所需的操作生成 URL ] class如下:
class FirstEntityCrudController extends AbstractCrudController
{
private $adminUrlGenerator;
public function __construct(AdminUrlGenerator $adminUrlGenerator)
{
$this->adminUrlGenerator = $adminUrlGenerator;
}
...
public function configureActions(Actions $actions): Actions
{
//The magic happens here
$url = $this->adminUrlGenerator
->setController(SecondEntityCrudController::class)
->setAction(Action::NEW)
->generateUrl();
return $actions
...
->add(Crud::PAGE_INDEX, Action::new('add-second-entity', 'Add second entity')
->linkToUrl($url)
);
}
}
这对我有用。
对于 link 在使用 EasyAdmin 4.x
制作的 CRUD 控制器中的新操作,对于另一个具有 OneToMany 关系的 CRUD 控制器中的操作,是否有任何解决方法?
class FirstEntityCrudController extends AbstractCrudController
{
...
public function configureActions(Actions $actions): Actions
{
return $actions
->add(Crud::PAGE_INDEX, Action::new('add-second-entity','Add a second entity')
->linkToCrudAction(Action::NEW ???)
)
;
}
}
The docs说我可以用:
linkToCrudAction(): to execute some method of the current CRUD controller;
但似乎没有关于如何“执行不同 CRUD 控制器的某些方法”的说明。
注意: 有一个偷偷摸摸的方法,但它似乎不健康:
->linkToUrl('the url to the desired action')
使用:
- PHP 8.1
- Symfony 5.4
- EasyAdmin 4.x
根据 @Ruban 的评论,正如 the docs 提到的那样,我们可以使用 [=11= 为所需的操作生成 URL ] class如下:
class FirstEntityCrudController extends AbstractCrudController
{
private $adminUrlGenerator;
public function __construct(AdminUrlGenerator $adminUrlGenerator)
{
$this->adminUrlGenerator = $adminUrlGenerator;
}
...
public function configureActions(Actions $actions): Actions
{
//The magic happens here
$url = $this->adminUrlGenerator
->setController(SecondEntityCrudController::class)
->setAction(Action::NEW)
->generateUrl();
return $actions
...
->add(Crud::PAGE_INDEX, Action::new('add-second-entity', 'Add second entity')
->linkToUrl($url)
);
}
}
这对我有用。