通过 Easy Admin 在 CRUD 控制器中进行新操作“预览”

问题描述 投票:0回答:2

我想在我的 ArticlesCrudController 的编辑页面中放置一个预览按钮。 我认为我尊重所有步骤,但我总是出现此错误:警告:未定义的数组键“ea”。

这是m代码:

namespace App\Controller\Admin;

class ArticlesCrudController extends AbstractCrudController
{
//...

    /** la méthode configureAction permet de mettre en place le bouton ainsi que son action */
    public function configureActions(Actions $actions): Actions
    {
        $preview = Action::new('previewArticle', 'Prévisualisation')
            ->displayAsButton()
            ->linkToCrudAction('previewArticle');

        /** J'affiche le bouton sur la page d'édition de l'entité article */
        return $actions
            ->add(Crud::PAGE_EDIT, $preview)
            ->add(Crud::PAGE_NEW, $preview);
    }

    /** Mise en place de la méthode previewArticle qui doit envoyer vers le template de prévisualisation */
    public function previewArticle($entityId, ArticlesRepository $repo): RedirectResponse
    {
        $article = $repo->find($entityId);
        if (!$article) {
            throw $this->createNotFoundException('Article not found');
        }

        return $this->render('site_diet/preview/preview_article.html.twig', [
            'articles' => $article
        ]);
    }

这一步我正确地按下了按钮:)但是不行:( 请问有什么问题吗? 我使用的是easyadmin 4.7.0

action easyadmin symfony6
2个回答
3
投票

我不知道你是否解决了这个问题,但我遇到了同样的问题,只是通过从操作中删除 displayAsButton() 来解决它。 应该是:

$preview = Action::new('previewArticle', 'Prévisualisation')
            ->linkToCrudAction('previewArticle'); 

0
投票

我找到了答案:

首先,通过重写方法 configureActions() 添加操作:

public function configureActions(Actions $actions): Actions
{
    $preview = Action::new('preview', 'Prévisualisation')
        ->linkToCrudAction('previewArticle');

    $actions
        ->add(Crud::PAGE_EDIT, $preview)
        ->add(Crud::PAGE_NEW, Action::SAVE_AND_CONTINUE);

    return $actions;
}

其次,编写这样的previewArticle()方法:

public function previewArticle(AdminContext $context)
{
    $article = $context->getEntity();
    $previewArticle = $article->getInstance();

    return $this->render('site_diet/preview/preview_article.html.twig', [
        'articles' => $previewArticle,
    ]);
}

而且效果很好:)

© www.soinside.com 2019 - 2024. All rights reserved.