配置CommentCrudController创建评论管理页面-Symfony5全面开发
我们已经创建了CommentCrudController类,回到页面我们点开Comment菜单,在右上角点击Add Comment
按钮,表单中Created At和Updated At,两个表单行是不需要的。
我们需要在CrudController类中配置字段,取消configureFields()方法的注释,id字段就使用IdField
,同样的IdField
我们只让它在首页显示。然后是作者属性,作者使用TextField
,下面是$email属性EasyAdminBundle提供了email字段,我们选择EasyAdminBundle下的EmailField
字段 属性的话输入email,评论消息这里我们使用TextAreaField
,创建时间和更新时间,我们可以复制上节课的代码。复制这四行。
class CommentCrudController extends AbstractCrudController
{
// ...
public function configureFields(string $pageName): iterable
{
return [
IdField::new('id')->onlyOnIndex(),
TextField::new('author'),
EmailField::new('email'),
TextareaField::new('message'),
AssociationField::new('post'),
CommentImageField::new('files')->onlyOnIndex(),
TimeField::new('createdAt')
->setFormat('Y-MM-dd HH:mm:ss')->onlyOnIndex(),
];
}
// ...
}
现在我们刷新页面,这样字段就已经配置好了,回到评论首页,我们并不需要在管理端添加评论,所有的评论都是在文章的详情页进行添加的,所以我们要删除Add Comment这个按钮。回到项目,我们按着command键点击AbstractCrudController类,在这个类中提供了一个configureActions()
方法。我们可以设置Actions对象,来删除首页的Add Comment按钮。
回到CommentCrudController类,我们覆盖configureActions()
方法,使用Actions对象的remove()
方法可以删除页面上的按钮。remove()
方法的第一个参数就是页面的名称,第二个参数是Action的名称,我们想要删除index页面的添加按钮,页面名称我们可以使用Crud类提供的常量,按钮的名称我们可以使用Action类的常量。如果你不懂这个方法的话,你可以查看EasyAdminBundle的文档。
class CommentCrudController extends AbstractCrudController
{
// ...
public function configureActions(Actions $actions): Actions
{
return $actions->remove(Crud::PAGE_INDEX, Action::NEW);
}
// ...
}
回到页面刷新,现在我们就没有了添加评论的按钮,在文章的详情页,如果有用户提交了评论,将会在Comment列表中进行显示。
我们已经创建了博客的管理到页面,在下节课,我们将安装模板引擎来使用模板引擎为我们的博客添加前台页面。