亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據在 Symfony 中調用的位置阻止監聽器被激活

根據在 Symfony 中調用的位置阻止監聽器被激活

PHP
素胚勾勒不出你 2022-06-17 15:47:08
我有一個包含很多捆綁包的 Symfony 項目。在其中一個中,我有一個像這樣的標準 Doctrine 監聽器:class MyListener{    public function postLoad(LifecycleEventArgs $args)    {        $entity = $args->getObject();        if ($entity instanceof MyEntity) {            //do something        }...現在我創建了一個新的 Bundle,它也將這些實體加載到控制器中。正如預期的那樣,它還觸發了監聽器中的 postLoad。我需要它不要觸發它,或者如果它是由這個 Bundle/Controller 觸發的,則不要執行任何操作,例如:class MyListener{    public function postLoad(LifecycleEventArgs $args)    {        $entity = $args->getObject();        if ($caller = "DontTriggerBundle")            return true;        }        if ($entity instanceof MyEntity) {            //do something        }...有沒有辦法做到這一點?提前致謝
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

所以這就是我解決它的方法:


將請求堆棧添加到服務:


<service id="myservice>

    <argument type="service" id="request_stack"/>

</service>

然后得到這樣的控制器:


// src/AppBundle/EventListener/AcmeListener.php

namespace AppBundle\EventListener;


use Doctrine\ORM\Event\LifecycleEventArgs;

use Symfony\Component\HttpFoundation\Request;

use Symfony\Component\HttpFoundation\RequestStack;


class AcmeListener

{

    /** @var Request */

    protected $request;


    /**

     * AcmeListener constructor.

     *

     * @param RequestStack $requestStack

     */

    public function __construct(RequestStack $requestStack)

    {

        $this->request = $requestStack->getCurrentRequest();

    }


    /**

     * @param LifecycleEventArgs $args

     */

    public function postLoad(LifecycleEventArgs $args)

    {

        $controller = $this->request->attributes->get('_controller');


        if (strpos($controller, 'DontTriggerController::indexAction') !== false) {

            // Do nothing

            return;

        }

        // Do somethings

    }

}

希望這可以幫助某人


查看完整回答
反對 回復 2022-06-17
  • 1 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號