嗨,我的控制器中有多年的数组:
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;
}