1
用戶將喜歡的日期:2012年6月11日。Yii更新輸入字段的輸錯日期 - 在何處進行控制?
要插入我使用的數據庫:
protected function beforeSave()
{
if($this->date <> '')
{
list($d, $m, $y) = explode('/', $this->date);
$mk=mktime(0, 0, 0, $m, $d, $y);
$this->date = date ('Y-m-d', $mk);
}
return parent::beforeSave();
}
問題1)是不是有一個較短的方法嗎?
無論如何,它的工作原理,所以我必須在字符串格式從數據庫日期型字段未來日期:
$date = '2012-11-06'
然後我正確使用日期格式,我也得到了日,月
yii::app()->dateFormatter->format('dd', $date);
yii::app()->dateFormatter->format('MMMM', $date);
這一切似乎很好地工作。 然而,我更新形式,我得到這樣一個日期:
「20/12/1106」
在表單上輸入字段,日期應轉換爲:
顯示時dd/mm/yyyy
。
在我的模型規則這裏是我有:
array('date', 'type', 'type' => 'date', 'message' => '{attribute}: Invalid Date!', 'dateFormat' => 'dd/mm/yyyy'),
我們在哪裏可以控制這個在Yii中,使我們對日期的輸入欄顯示爲DD/MM/YYYY?
我已經做到了這一點,但ofcourse如果我們以後還有別的控制器然後更新,我們必須改變這一點。這似乎不是一個好方法。 :(
protected function afterFind()
{
if(Yii::app()->controller->action->id == 'update')
{
if($this->date <> '')
{
Yii::app()->dateFormatter->formatDatetime($this->date,'short');
}
return parent::afterFind();
}
}
我一直在勸(所有在這個互聯網的文章),不保存在其他F上的日期ormat然後yyyy-mm-dd - 這是數據庫接受的格式,沒有大驚小怪。如果我們需要以不同的方式顯示它,我們會將其轉換爲應用程序日期或日期時間通常是這裏的字段。我會試一試。 3分鐘。 – MEM
還有你說的是正確的,但我相信簡單的足夠的使用數據庫就不會拒絕值:)你可以設置varchar類型,這將成爲唯一的存儲和quries –
我用一個afterFind這麼做可能無法幫助()。但我相信這種做法非常粗魯。你能檢查一下嗎? – MEM