从另一个控制器调用动作并返回数据 Yii2

PGg*_*PGg 4 php action controller return yii2

我有控制器,我需要从另一个控制器访问操作并返回数据:

rest/controllers/AController

switch (@$_GET['barcodeType']) 
{
    case '1D':
    {  
            //do action Request1 from BController and return data from 
            this controller
    }
    break;

    case '2D':
    {
            //do action Request2 from BController and return data from 
            this controller
    }
    break;

    default:
    return  ['Wrong barcodeType'];
    break; 
}
Run Code Online (Sandbox Code Playgroud)

soap/controllers/BController

public actionRequest1{
    //do something and return data to AController
}

public actionRequest2{
    //do something and return data to AController
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

ber*_*boy 9

如果您需要重用另一个控制器的操作,您可以这样做:

$result = Yii::$app->runAction('b/request1', ['param1' => 'value1', /* ... */]);
Run Code Online (Sandbox Code Playgroud)

但我不推荐它。我建议您将逻辑移至另一个组件,以便两个控制器都可以使用它。