代码之家  ›  专栏  ›  技术社区  ›  chenxinlong

是否仍然可以从Yii2中的前一个过滤器中获取变量?

  •  0
  • chenxinlong  · 技术社区  · 7 年前

    在Yii2.0中,我希望从以前的过滤器中获取一个值,以避免在每个过滤器中进行相同的查询。 还有什么办法吗?

    例如,这是我在控制器中的代码:

    public function behaviors() {
        return [
            'filter1' => ['class' => Filter1::className()],
            'filter2' => ['class' => Filter2::className()]
        ];
    }
    

    在里面 filter1 ,我进行了一个sql查询,并希望在中使用此查询的结果 filter2 因为我不想再次进行此查询。
    我该怎么办?
    如果我想从控制器中的过滤器中获取一个值,我应该怎么做?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Maarten van Middelaar myartsev    7 年前

    虽然您将耦合您的行为,但您可以通过它所连接的组件访问任何行为

    \Yii::$app->controller->getBehavior('filter1')->yourValue
    

    或来自filter2行为:

    $this->owner->getBehaviour('filter1')->yourValue
    

    看见

    http://www.yiiframework.com/doc-2.0/yii-base-behavior.html#$owner-detail