Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 5&;找不到EasyAdmin 3.0-/admin路由_Php_Symfony_Symfony5_Easyadmin - Fatal编程技术网

Php Symfony 5&;找不到EasyAdmin 3.0-/admin路由

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 5项目,并添加了Easy Admin trought Symfony CLI:

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();
}

我解决这个问题的方法如下:

  • 卸下EasyAdmin 3
  • 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');
        }      
           
    };