嗨我在控制器中有多年的数组:
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添加一年吗?
答案 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;
}