如何根据条件更改视图中的数据

时间:2016-11-01 19:13:01

标签: php yii2

我从某个API获取模型中的数据,在Controller中我使用它的方法,获取数据并将其放入视图中。在控制器中我获得了我需要的所有数组,在视图中我获得了不同的值。但是现在我试图使视图变化,它取决于某些条件。我的页面中有两个链接,想要点击时首先显示一个数据,另一个显示另一个数据。但是我不会创建动作来创建新视图并将相同的数据放入其中,例如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']) ?>

1 个答案:

答案 0 :(得分:0)

您可以让链接添加另一个变量:

<?= 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
}