按钮单击将一个功能更改为秒

时间:2016-03-12 12:07:06

标签: javascript php yii2

嗨我在控制器中有多年的数组:

public function getNextYear() {

    $years = $this->getYears();
    foreach ($years as $key => $value) {
        $y[] = $value + 1;
    }
    return $y;
}

我在索引中显示:

  <?php foreach ($years as $year): ?>

        <div class="">

            <?= $year; ?><br>

        </div>

    <?php endforeach; ?>
<?php endif; ?><br>

可以使用php添加一年吗?

1 个答案:

答案 0 :(得分:1)

不。您需要使用Ajax将更多内容加载到视图中。

此外,您将检查是否有更多年份加载,然后显示一个使用Javascript / Jquery调用Ajax的按钮。这个请求会将内容直接放到你的页面中,手段,你的函数getNextYear()必须返回一个Json或Html内容。

如果结果是Json,则在AJax回调中,格式为HTML。

毕竟这一切,再加上按钮,放一个div,用一些类来放更多内容:

<button id="callAjaxNextYears"></button>
<div class="nextYears"></div>
不要忘记,在你的ajax发送去年显示。然后你可以使用类似的东西:

<button value="2012"></button>

在你的函数中,必须识别_GET或_POST或param:

getNextYear($start){}

作为更好的实践,所有这些年份列表必须由ajax实现,以避免项目中的标准代码。或者,您可以了解有关“AngularJS”的更多信息。

尝试更改PHP函数,以便更好地使用ajax调用:

public $actualYear;
public $maxYear = 2030; // Just a exemple, otherwhise, will create infinite years list

public static function getYears() {

        if(isset($this->actualYear)){
            $nowYear = $this->actualYear;
        } else {
            $nowYear = date("Y");
            $this->actualYear = 2010;
        }

        if($nowYear < $maxYear){

            $i = 0;
            for ($yearNum = $this->actualYear; $yearNum <= $nowYear; $yearNum++) {
                $year[] = $yearNum;
                $i++;
                if ($i == 3)
                    break;
            }

        }

        return $year;
    }

public function getNextYear() {

    $this->actualYear = $_POST['start']; // Wherever your ajax has sended, can be a _GET as well

    $years = $this->getYears();
    foreach ($years as $key => $value) {
        $y[] = $value + 1;
    }
    return $y;
}

如果您选择不使用ajax,请尝试以下操作:

<a href="?start=2012">Load more years</a>

然后在控制器中:

public $maxYear = 2030; // Just a exemple, otherwhise, will create infinite years list

public static function getYears() {

        if(isset($_GET['start'])){
            $nowYear = $_GET['start'];
        } else {
            $nowYear = date("Y");
            $this->actualYear = 2010;
        }

        if($nowYear < $maxYear){

            $i = 0;
            for ($yearNum = $this->actualYear; $yearNum <= $nowYear; $yearNum++) {
                $year[] = $yearNum;
                $i++;
                if ($i == 3)
                    break;
            }

        }

        return $year;
    }