升级 easyadmin bundle symfony 时路由发生变化
Routing changes when upgrading easyadmin bundle symfony
我负责在之前使用 symfony v4.4.19 构建的应用程序上升级 easyadmin 包。最初我们有:easycorp/easyadmin-bundle v2.3.12。然后,我们决定将 easyadmin 包升级到 v3,因为我们在列表视图中 enabling/disabling 一个布尔值 属性 时遇到了一些问题。
当我使用 v2 时:
php bin/console debug:router 显示了一条名为 easyadmin 的路由,路径为 /myworkshop/ .
我没有 Dashboard 控制器也没有 NecklaceCrudController,我只是有一个名为
AccessoriesController.php 具有多个操作,例如用户在执行时执行的 deleteAction
删除一个实体,editAction 当用户编辑一个实体时,SearchAction ...
在 deleteAction 中有这行代码:
return $this->redirect($this->generateUrl('easyadmin', array('action' => 'list', 'entity'=> $this->entity['name'])));
所以 url 会变成这样
/myworkshop/?action=list&entity=项链
要打开简单的管理界面,我必须单击菜单 link,其 link 是:
->createItem('Visit my workshop', ['route' => 'easyadmin']);
当我打开这个界面 /references 时,我得到了我的应用程序中不同实体的列表,如果
我 select 一个,我看到列表视图,我可以成功编辑一个实体,但我不能
enable/disable 前面提到的列表视图中的布尔属性。
我们在 app>config>routing.yml
中指定了 /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/console debug:router 显示了一条名为 myshop_admin_dashboard_index 的路线(这是
自动生成),路径为 /easyadmin.
Dashboard controller 和 NecklaceCrudController 已创建,DashboardController 只有 configureCrud() 和 configureMenuItems() 函数。后者包含 links yield MenuItem::linkToCrud
。问题 1:在版本 2 中,没有像此处那样明确创建的菜单 link,所以我想知道完整的实体列表如何正确显示在我的应用程序界面上?
在 DashboardController 中没有 index () 函数,也没有路由,也没有 link 只有 configureCrud() 和 configureMenuItems() 函数。
我想保留 AccessoriesController.php 他的几个动作,但现在有了新的路线和路径,它完全被忽略了。问题 2:我必须在 generateUrl 部分更改某些内容吗?如果我像我在文档中读到的那样选择 adminUrlgenerator,有人能给我举个例子吗?
routing.yml 文件保持不变,但是,我的 easyadmin 界面仅在访问此 link /easyadmin 而不是 /myworkshop 时出现。问题三:我想保留 /workshop url ,除了现在的 routing.yml 应该怎么办?
我希望我们可以将 myshop_admin_dashboard_index 更改为 easyadmin 并将 /easyadmin 更改为我的 /myworkshop 就像在版本 2 中一样,因为在 AccessoriesController 中有很多部分我使用 $this->generateUrl('easyadmin',
问题 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')
;
}
}
我负责在之前使用 symfony v4.4.19 构建的应用程序上升级 easyadmin 包。最初我们有:easycorp/easyadmin-bundle v2.3.12。然后,我们决定将 easyadmin 包升级到 v3,因为我们在列表视图中 enabling/disabling 一个布尔值 属性 时遇到了一些问题。
当我使用 v2 时:
php bin/console debug:router 显示了一条名为 easyadmin 的路由,路径为 /myworkshop/ .
我没有 Dashboard 控制器也没有 NecklaceCrudController,我只是有一个名为 AccessoriesController.php 具有多个操作,例如用户在执行时执行的 deleteAction 删除一个实体,editAction 当用户编辑一个实体时,SearchAction ... 在 deleteAction 中有这行代码:
return $this->redirect($this->generateUrl('easyadmin', array('action' => 'list', 'entity'=> $this->entity['name'])));
所以 url 会变成这样 /myworkshop/?action=list&entity=项链
要打开简单的管理界面,我必须单击菜单 link,其 link 是:
->createItem('Visit my workshop', ['route' => 'easyadmin']);
当我打开这个界面 /references 时,我得到了我的应用程序中不同实体的列表,如果 我 select 一个,我看到列表视图,我可以成功编辑一个实体,但我不能 enable/disable 前面提到的列表视图中的布尔属性。
我们在 app>config>routing.yml
中指定了 /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/console debug:router 显示了一条名为 myshop_admin_dashboard_index 的路线(这是 自动生成),路径为 /easyadmin.
Dashboard controller 和 NecklaceCrudController 已创建,DashboardController 只有 configureCrud() 和 configureMenuItems() 函数。后者包含 links
yield MenuItem::linkToCrud
。问题 1:在版本 2 中,没有像此处那样明确创建的菜单 link,所以我想知道完整的实体列表如何正确显示在我的应用程序界面上?在 DashboardController 中没有 index () 函数,也没有路由,也没有 link 只有 configureCrud() 和 configureMenuItems() 函数。
我想保留 AccessoriesController.php 他的几个动作,但现在有了新的路线和路径,它完全被忽略了。问题 2:我必须在 generateUrl 部分更改某些内容吗?如果我像我在文档中读到的那样选择 adminUrlgenerator,有人能给我举个例子吗?
routing.yml 文件保持不变,但是,我的 easyadmin 界面仅在访问此 link /easyadmin 而不是 /myworkshop 时出现。问题三:我想保留 /workshop url ,除了现在的 routing.yml 应该怎么办? 我希望我们可以将 myshop_admin_dashboard_index 更改为 easyadmin 并将 /easyadmin 更改为我的 /myworkshop 就像在版本 2 中一样,因为在 AccessoriesController 中有很多部分我使用
$this->generateUrl('easyadmin',
问题 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')
;
}
}