我负责在以前使用symfony v4构建的应用程序上升级easyadmin捆绑包。4.19. 最初我们有:easycorp/easyadmin bundle v2。3.12. 然后,我们决定将easyadmin捆绑包升级到v3,因为在从列表视图启用/禁用布尔属性时遇到了一些问题。
当我使用v2时:
>
我没有仪表板控制器,也没有项链控制器,我只是有一个叫做AccessoriesController的控制器。php中的一些操作,如用户删除实体时执行的deleteAction、用户编辑实体时执行的editAction、SearchAction。。。在deleteAction中有以下代码行:
返回$this-
那么url会变成这样的/myworkshop/?动作=列表
要打开easy admin界面,我必须单击一个菜单链接,其链接为:-
当我打开此接口/引用时,我会在我的应用程序中获得不同实体的列表,如果我选择一个,我会看到列表视图,我可以成功编辑一个实体,但我无法从列表视图中启用/禁用布尔属性,如前所述。
我们在应用程序中指定了/myworkshop而不是/admin
# easy admin
easy_admin_bundle:
resource: "@myShop/Controller/AccessoriesController.php"
type: annotation
prefix: /myworkshop```
- A custom css was successfully employed in : app>config>config.yml
easy_admin:
design:
assets:
css:
- 'bundles/css/easyadmin.css
当我升级到v3时:
>
php bin/控制台调试:路由器显示了一个名为myshop_admin_dashboard_index(自动生成)的路由,路径 /easyadmin.
创建了Dashboard控制器和NecklaceCrudController,DashboardController只有configureCrud()和configureMenuItem()函数。后者包含的链接产生MenuItem::link ToCrud
。问题1:在版本2中,没有像这里这样明确创建的菜单链接,所以我想知道实体的完整列表是如何正确显示在我的应用程序界面上的?
在DashboardController中,没有index()函数,也没有路由或链接,只有configureCrud()和configureMenuItems()函数。
我想保留附件控制器。php与他的几个动作,但现在,与新的路线和路径,它是完全被忽略。问题2:在generateUrl部分有什么我必须改变的吗?如果我像在文档中读到的那样选择adminUrlgenerator,有人能给我举个例子说明这会变成什么样子吗?
路由。yml文件保持不变,但我的easyadmin界面仅在访问此链接/easyadmin而不是/myworkshop时显示。问题3:我想保留/workshop url,除了保留路由外,我还应该做什么。现在是什么样子?我希望我们可以将myshop_admin_dashboard_index更改为easyadmin,将/easyadmin更改为my/myworkshop,就像在版本2中一样,因为AccessoriesController中有许多部分是我使用的$this-
问题4:css不再适用,你知道为什么吗?可能与当前未考虑的AccessoriesController相关。
您可以将index
方法添加到带有路线注释的仪表板控制器中,以更改路线
class DashboardController extends AbstractDashboardController
{
/**
* @Route("/myworkshop", name="admin")
*/
public function index(): Response
{
return $this->render('dashboard/index.html.twig');
}
您可以像这样将任何路由添加到easyadmin菜单
class DashboardController extends AbstractDashboardController
{
public function configureMenuItems(): iterable
{
yield MenuItem::linktoRoute('Some Route', 'fa fa-info', 'route_name_here');
#...
}
}
您也可以添加任何CSS/js文件
class DashboardController extends AbstractDashboardController
{
public function configureAssets(): Assets
{
return Assets::new()
->addCssFile('build/admin.css')
->addJsFile('build/admin.js')
;
}
}