在按钮单击中将一个功能更改为第二个功能

change one function into second in button click

本文关键字:功能 一个 第二个 单击 按钮      更新时间:2023-09-26

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

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添加一年?

不。您将需要使用 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或参数:

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;
    }