Php Symfony 5&;找不到EasyAdmin 3.0-/admin路由
我在本地安装了新的Symfony 5项目,并添加了Easy Admin trought Symfony CLI:Php Symfony 5&;找不到EasyAdmin 3.0-/admin路由,php,symfony,symfony5,easyadmin,Php,Symfony,Symfony5,Easyadmin,我在本地安装了新的Symfony 5项目,并添加了Easy Admin trought Symfony CLI: symfony编写器请求管理 我应该有/admin路线,但它不见了 我运行: symfony控制台缓存:清除 symfony composer转储自动加载 rm-rf var/cache/* symfony console debug:router -------------------------- -------- -------- ------ ---------------
symfony编写器请求管理
我应该有/admin
路线,但它不见了
我运行:
symfony控制台缓存:清除
symfony composer转储自动加载
rm-rf var/cache/*
symfony console debug:router
-------------------------- -------- -------- ------ -----------------------------------
Name Method Scheme Host Path
-------------------------- -------- -------- ------ -----------------------------------
_preview_error ANY ANY ANY /_error/{code}.{_format}
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
homepage ANY ANY ANY /
-------------------------- -------- -------- ------ -----------------------------------
我缺少什么?EasyAdminBundle v3有另一个配置,您不再需要使用
EasyAdminController
资源
你可以在这里找到更多的信息
这里呢
您至少需要创建一个仪表板。尝试:
php bin/console make:admin:dashboard
接下来,您可以使用以下内容创建CrudController:
php bin/console make:admin:crud
是的,我现在正在读这本书,遇到了同样的问题 首先,确保您的工作目录是干净的(运行“git status”并删除EasyAdminBundle安装程序所做的所有更改) 然后运行:
composer require easycorp/easyadmin-bundle:2.*
安装EasyAdminBundle版本2;使用此版本,您可以按照本书中的说明进行操作。从easyadmin 2迁移到3时,路由名称似乎没有保留。一种方法是在DashboardController中添加
/**
* @Route("/admin", name="easyadmin")
*/
public function index(): Response
{
return parent::index();
}
我解决这个问题的方法如下:
composer删除管理员
编写器需要“easycorp/easyadmin捆绑包”:“^2.3”
composer更新
就我而言
首先
然后
composer require easycorp/easyadmin-bundle v2.3.9 doctrine/common v2.13.3 doctrine/persistence v1.3.8
因此,它对本书起到了作用,正如其他人已经说过的那样,您需要创建一个具有以下功能的仪表板:
php-bin/console-make:admin:dashboard
然后创建至少一个crud控制器。由于您似乎正在使用快速跟踪手册,因此需要键入以下命令两次,并为评论和会议创建一个命令:
php-bin/console-make:admin:crud
我也在使用快车道书,这就是我的文件的结局。我仍在学习easy admin3,因此不主张最佳实践,但这应该使菜单看起来与快速跟踪屏幕截图中的一样:
src/Controller/Admin/DashboardController.php:
/**
*@Route(“/admin”,name=“admin”)
*/
公共函数索引():响应
{
$routeBuilder=$this->get(crudulGenerator::class)->build();
返回$this->redirect($routeBuilder->setController(ConferenceCrudController::class)->generateUrl());
}
公用函数configureDashboard():仪表板
{
返回仪表板::新建()
->设置标题(“留言簿”);
}
公共函数configureMenuItems():iterable
{
收益菜单项::linktoRoute(‘返回网站’、‘主页’、‘主页’);
收益率菜单项::linkToCrud('会议','fa地图标记',会议::类);
yield MenuItem::linkToCrud('Comment','fa-fa-Comment',Comment::class);
}
src/Controller/Admin/CommentCrudController.php:
公共静态函数getEntityFqcn():字符串
{
返回Comment::类;
}
公共函数配置字段(字符串$pageName):iterable
{
返回[
IdField::new('id')->hideOnForm(),
TextField::new('author'),
TextareaField::new('text')->hideOnIndex(),//删除->hideOnIndex()将显示指向文本模式的链接
EmailField::新建(“电子邮件”),
DateTimeField::new('createdAt')->hideOnForm(),
ImageField::new('photoFilename','Photo')->setBasePath('/uploads/photos')->hideOnForm(),
AssociationField::新建('会议')
];
}
src/Controller/Admin/ConferenceCrudController.php
公共静态函数getEntityFqcn():字符串
{
返回会议::课堂;
}
公共函数配置字段(字符串$pageName):iterable
{
返回[
IdField::new('id')->hideOnForm(),
TextField::new('city'),
TextField::新的('year'),
BooleanField::new('isInternational'),
IntegerField::new('commentCount','Comments')->hideOnForm()
];
}
在src/Entity/Conference.php中,我添加了以下内容以使commentCount
可用:
公共函数getCommentCount():int
{
返回$this->comments->count();
}
为了在提交注释时自动生成createdAt日期时间,我首先安装了以下捆绑包:
$ composer require stof/doctrine-extensions-bundle
然后修改config/packages/stof_doctrine_extensions.yaml:
stof_原则扩展:
默认语言环境:en\u US
orm:
违约:
树:是的
时间戳:true
最后在src/Entity/Comment.php中用以下内容装饰private$createdAt
:
/**
*@var\DateTime
*@ORM\Column(type=“datetime”)
*@Gedmo\Mapping\Annotation\timestable(on=“create”)
*@Doctrine\ORM\Mapping\Column(type=“datetime”)
*/
私人$createdAt;
对我来说,最清楚、最完整的解释就是@AnnaHowell的答案
我只会更改你代码的一部分。
在src/Controller/Admin/CommentCrudController.php:
public function configureFields(string $pageName): iterable
{
$avatar = ImageField::new('photoFilename')->setBasePath('uploads/photos/')->setLabel('Photo');
$avatarTextFile = TextField::new('photoFilename');
{
yield TextField::new('author');
yield TextEditorField::new('text');
yield TextField::new('state');
yield EmailField::new('email');
yield DateTimeField::new('createdAt', 'Created')->setFormat('dd-MM-y HH:mm:ss')
->setSortable(true)->setFormTypeOption('disabled','disabled');
if (Crud::PAGE_INDEX === $pageName) {
yield ImageField::new('photoFilename')->setBasePath('uploads/photos/')->setLabel('Photo');
} elseif (Crud::PAGE_EDIT === $pageName) {
yield TextField::new('photoFilename')->setLabel('Photo');
}
};
因此,我们允许管理员不仅评估文本,而且评估照片的相关性。
如果一条评论有很好的文字,但有一张不方便或琐碎的照片呢?
管理员可以删除照片的名称(这样它就不可见),留下文字注释并发布。只需将所有
/vendor/easycorp/easyadmin bundle/src/Resources/public
复制到public/bundles/easyadmin
简短回答:
确保您正在使用HTTPS访问管理路由。即使管理员路由应该使用debug:router命令中的任何方案
详细答案
相同的情况,可在Symfony 4.4、Symfony 5.2和Easyadmin 3.2中复制
我发现我正在使用http(WAMP)访问我的服务器:
统一资源定位地址
结果
http://localhost
200
http://localhost/admin
404
是的。我在这里犯了一个错误。路径正确,我也有同样的问题!
composer require easycorp/easyadmin-bundle v2.3.9 doctrine/common v2.13.3 doctrine/persistence v1.3.8
$ composer require stof/doctrine-extensions-bundle
public function configureFields(string $pageName): iterable
{
$avatar = ImageField::new('photoFilename')->setBasePath('uploads/photos/')->setLabel('Photo');
$avatarTextFile = TextField::new('photoFilename');
{
yield TextField::new('author');
yield TextEditorField::new('text');
yield TextField::new('state');
yield EmailField::new('email');
yield DateTimeField::new('createdAt', 'Created')->setFormat('dd-MM-y HH:mm:ss')
->setSortable(true)->setFormTypeOption('disabled','disabled');
if (Crud::PAGE_INDEX === $pageName) {
yield ImageField::new('photoFilename')->setBasePath('uploads/photos/')->setLabel('Photo');
} elseif (Crud::PAGE_EDIT === $pageName) {
yield TextField::new('photoFilename')->setLabel('Photo');
}
};