CakePHP:显示成员资格到期状态

时间:2012-08-01 11:49:01

标签: cakephp membership

在我的系统中,我有一个关于会员资料的部分。我希望能够为每个成员显示成员资格到期状态(例如,当前,到期和过期)。我已经有了每个人的到期日。我只需要一种方法让系统检查到期日期是什么,并显示成员资格状态,我不知道该怎么做。

如果有人可以发布有关如何执行此操作的详细说明,那将会很棒。

会员模特:

<?php
App::uses('AppModel', 'Model');
class Member extends AppModel {
    public $displayField = 'id';

    public $belongsTo = array(
        'Contact' => array(
            'className' => 'Contact',
            'foreignKey' => 'contact_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
}

会员表有:
ID
MEMBER_TYPE
year_joined
date_renewed
card_issue_date
renewal_due
contact_id

会员资格每年一次。和任何俱乐部会员一样的功能。我需要索引页面和视图页面通过检查“renewal_due”来显示每个成员的状态,“renewal_due”是成员资格的到期日期。成员资格的状态应显示“当前”表示仍然有效/未过期的成员资格,“由于到期”表示会员资格在一个月内到期,而“已过期”表示已过期。

如果您需要任何进一步的信息,请随时询问。我不确定这需要什么样的信息。

1 个答案:

答案 0 :(得分:0)

如果您将续订日期作为unix时间戳保存在数据库中,则可以使用time()

将当前时间与续订日期进行比较

你的控制器:

<?php

public function index($memberid) {
    $this->set('member', $this->Member->find('first', array('conditions' => array('Member.id' => $memberid)));
}

?>

并在您看来:

<?php
    if($member['Member']['renewal_date'] <= time()) {
        $status = 'Expired';
    } elseif (($member['Member']['renewal_date'] - (30 * 24 * 60 * 60)) <=  time()) {
        $status = 'Due To Expire';
    }  else {
        $status = 'Current';
    }
?>

Your membership is: <?php echo $status; ?>

您需要更改数据库,以便renewal_date字段为整数,然后将renewal_date保存为unix时间戳格式,如下所示:

<?php
    //sets a date one year from now
    $one_year_ahead = time() + (365 * 24 * 60 * 60);
    //alternative method
    $one_year_ahead = strtotime('+1 year');
?>