Как настроить рабочий процесс Symfony - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю над версией Symfony 4.2. Я создал Workflow Service, который имеет черновой вариант с тремя местами, просмотрен и опубликован

Я добавляю в conf / products / framework.yaml эти строки кода. Но я не понимаю, что такое currentPlace в коде. Я работал на этом примере https://symfony.com/doc/4.2/workflow.html

workflows:
        article_publishing:
            type: 'workflow'
            audit_trail:
                enabled: true
            marking_store:
                type: 'multiple_state'
                arguments:
                    - 'currentPlace'
            supports:
                - App\Entity\Article
            initial_marking: draft
            places:
                -draft
                -reviewed
                -published
            transitions:
                to_review:
                    from: draft
                    to:   reviewed
                publish:
                    from: reviewed
                    to:   published

Но когда я обновляю сайт, я получаю эту ошибку

   Warning: array_map(): Argument #2 should be an array

Ошибка

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я изменил его так, что я удалил кавычки из типа, удалил аргументы и добавил Verified_by_admin, и теперь он работает.

framework:
  workflows:
    article_publishing:
      type: workflow
      audit_trail: true
      marking_store:
        type: multiple_state
      supports:
        - App\Entity\Article
      places:
        - draft
        - for_review
        - approved_by_admin
        - published
      transitions:
        to_for_review:
          from: draft
          to:   for_review
        to_approved_by_admin:
          from: for_review
          to: approved_by_admin
        to_published:
          from: approved_by_admin
          to:   published
        to_draft:
          from: for_review
          to:   draft

И я добавляю в контроллер этот код

/**
     * @Route("/apply-transition/{article}", methods={"POST"})
     */
    public function applyTransition(WorkflowInterface $articleWorkflow, Request $request, Article $article, RouterInterface $router)
    {
        $slug = $article->getCategory()->getSlug();
        try {
            $articleWorkflow->apply($article, $request->request->get('transition'));
            $this->repository->flush();
        } catch (ExceptionInterface $e) {
           echo $e->getMessage();
        }
        $url = $router->generate('app_category_view', ([
            'slug' => $slug,
        ]));
        return new RedirectResponse($url);

    }
    /**
     * @Route("/resetMarking/{article}", methods={"POST"})
     */

    public function resetMarking(Article $article, RouterInterface $router)
    {
        $slug = $article->getCategory()->getSlug();
        $article->setMarking([]);
        $this->repository->flush();
        $url = $router->generate('app_category_view', ([
            'slug' => $slug,
        ]));
        return new RedirectResponse($url);
    }

И к Entity я добавляю это

/**
     * @ORM\Column(type="json_array", nullable=true)
     */
    private $marking;

    /**
     * @ORM\Column(type="json_array", nullable=true)
     */
    private $transitionContexts;
0 голосов
/ 06 ноября 2019

Недопустимый раздел places вашей конфигурации YAML.

Он должен выглядеть следующим образом:

places:
    - draft
    - reviewed
    - published

Обратите внимание на пробел между символом минус и именем элемента

...