spzgy 2013-04-27 02:01:06 3353次浏览 1条回复 0 0 0

初学yii,遇到个一个问题。 我的数据库表里有一个字段repayment_date,是时间戳。 我想通过页面中的RepaymentDateText传递过来的值:2013-04-27,来设定repayment_date。 getter部分已经OK,可以正常获得

public function getRepaymentDateText()
{
    if (empty($this->repayment_date)) {
        return null;
    } else {
        return date('Y-m-d',$this->repayment_date);
    }
}

setter部分我是这样写的

public function setRepaymentDateText($value)
{
    if(empty($value) || !$value) return false;
    $this->repayment_date = strtotime($value.' 00:00:00');
}

gii默认在Controller中用$model->attributes=$_POST['***'],这样自动过滤了POST过来的RepaymentDateText的值

public function actionUpdate($id)
{
	$model=$this->loadModel($id);

	// Uncomment the following line if AJAX validation is needed
	// $this->performAjaxValidation($model);

	if(isset($_POST['Blacklist']))
	{
		$model->attributes=$_POST['Blacklist'];
		if($model->save())
			$this->redirect(array('view','id'=>$model->id));
	}

	$this->render('update',array(
		'model'=>$model,
	));
}

我在model的beforeSave里用,如下代码可以激活setRepaymentDateText,但是这样写不是很合适。 $model->RepaymentDateText = $_POST['Blacklist']['RepaymentDateText'];

第一个问题:请问如何该如何处理才比较好? 第二个问题:$_POST['Blacklist']['RepaymentDateText']这个值应该如何验证才更加复合yii的规范?写在rules()里?请给个示范代码,谢谢。

  • 回复于 2013-04-28 00:07 举报

    好吧,我找到答案了,yii是这样声明的:

    public function rules()
    {
        return array(
            #......
            array('repayment_date_text', 'length', 'max'=>10),
            #......
        );
    }
    
您需要登录后才可以回复。登录 | 立即注册