我有一个网站广告列表。我希望能够根据index.ctp列表中的行颜色直观地判断广告是否仍处于活动状态。我有一个控制每个条目的表单。表单中有一个$ end_date。颜色将基于该日期。我真的不知道我在做什么,所以我想在AdsController中需要一种函数来执行逻辑。如果我走的路正确,请告诉我。
现在的问题是没有出现颜色变化。这是代码:
public function getStatusColor($status_color) {
$this->loadModel('Advertisements');
$date = $this->Advertisements->get($end_date);
$now = new DateTime();
if($date < $now) {
echo '#ff0000' ;
} else {
echo '#00ff00' ;
}
}
在我的index.ctp中,这只是列表代码的一部分,所以您可以看到如何将颜色拼接到表中
foreach($advertisements as $advertisement) {
echo '<tr style="background-color: <?php echo $status_color; ?>;">';
echo '<td>'.$advertisement->id.'</td>';
echo '<td>'.$advertisement->title.'</td>';
答案 0 :(得分:1)
您可能不需要一个单独的函数来执行此操作,而您在该函数中执行的操作实际上只需要执行一次(例如获取当前数据)。如果没有您创建的函数,请尝试以下操作:
$this->loadModel('Advertisements');
$now = new DateTime();
foreach ($advertisements as $advertisement) {
$date = $this->Advertisements->get($end_date);
echo '<tr style="background-color: ' . ($date < $now ? '#ff0000' : '#00ff00') . '">';
echo '<td>'.$advertisement->id.'</td>';
echo '<td>'.$advertisement->title.'</td>';
}
答案 1 :(得分:0)
嗯,我对Cake PHP不熟悉,但是总体观察是-我看不到您在哪里调用该函数或从该函数返回该颜色代码。
我期望index.php中的for循环中有$ advertisement-> getStatusColor()
和功能
返回('#ff0000')或返回('#00ff00');
对不起,如果我在解释您编写的代码时错了。
答案 2 :(得分:0)
好的,所以因为我是新手,所以我一直在想它。就是这样完成的。
$now = new DateTime();
echo '<tr style="background-color: '. ($advertisement->end_date < $now ? '#ff0000' : '#00ff00') .'">';
感谢大家的投入!