如何根据情况改变视图中的数据


How to change data in view depending condition

我从一些API中获得模型中的数据,在控制器中我使用它的方法,获取数据并将其放入视图中。在控制器中,我得到我需要的所有数组,在视图中,我得到不同的值。但现在我试图使视图可变,它取决于一些条件。我有两个链接在我的页面,并希望当点击第一-显示一个数据,当另一个-显示另一个。但我不会创建action它会创建新视图并放上相同的数据比如actionIndex,但有不同的视图。我怎样才能避免呢?如何在一个视图中拥有不同的数据?

控制器:

class RatesController extends Controller
{
    public function actionIndex()
    {
        $model = new ExchangeRates();
        $privatData = $model->getPrivatRate();
        $nbuData = $model->getNationalRate();
        $mejData = $model->getMejBankRate();
        $blackMarketData = $model->getBlackMarketRate();
        $avgUSA = ($privatData[2]["buy"] + $nbuData[0]["rate"] + $mejData[0]["Buy"] + $blackMarketData[0]["Buy"] +
        $privatData[2]["sale"] + $nbuData[0]["rate"] + $mejData[0]["Sale"] + $blackMarketData[0]["Sale"])/8;
        return $this->render('index',['privatdata' => $privatData, 'nbudata' => $nbuData,'mejdata'=>$mejData,'blackdata' => $blackMarketData, 'avgUSA'=>$avgUSA]);
    }

视图:

<div>
    <h2> Курс валют на сегодня</h2>
    <div class="banks">
        <h3>Банки:</h3>
        <h4>ПриватБанк</h4>
        <h4>НБУ</h4>
        <h4>МежБанк</h4>
        <h4>Черный рынок</h4>
    </div>
    <div class="buy">
        <h3> Покупка </h3>
        <p><?php print_r($privatdata[2]["buy"])?></p>
        <p><?php print_r($nbudata[0]["rate"])?></p>
        <p><?php print_r($mejdata[0]["Buy"])?></p>
        <p><?php print_r($blackdata[0]["Buy"])?></p>
    </div>
    <div class="sale">
        <h3> Продажа </h3>
        <p><?php print_r($privatdata[2]["sale"])?></p>
        <p><?php print_r($nbudata[0]["rate"])?></p>
        <p><?php print_r($mejdata[0]["Sale"])?></p>
        <p><?php print_r($blackdata[0]["Sale"])?></p>
    </div>
    <div class="avg_rate">
        <h3>Средний курс на сегодня:</h3>
        <?php print_r($avgUSA)?>
    </div>
</div>
<?= Html::a('USA', ['index.php/rates']) ?>
<?= Html::a('Euro', ['/controller/action']) ?>

你可以让你的链接像这样添加另一个变量:

<?= Html::a('USA', ['index.php/rates', 'type' => 'USA']) ?>
<?= Html::a('USA', ['index.php/rates', 'type' => 'EURO']) ?>

在你的动作中:

public function actionIndex($type) {
    if($type == 'USA') {
        // Do something for USA
    }
    elseif($type == 'EURO') {
        // Do something else for EURO
    }
    // Call your view only once, maybe send $type as a parametter so you can make changes to some text displayed
}