ユーザーは、2012 年 6 月 11 日のような日付を挿入します。
私が使用するデータベースに挿入するには:
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);
これはすべてうまくいくようです。ただし、更新フォームでは、次のような日付を取得します。
「1106/12/20」
フォーム入力フィールドで、日付を次のように変換する必要があります。
dd/mm/yyyy
表示されたとき。
私のモデルルールでは、私が持っているものは次のとおりです。
array('date', 'type', 'type' => 'date', 'message' => '{attribute}: Invalid Date!', 'dateFormat' => 'dd/mm/yyyy'),
日付の入力フィールドで dd/mm/yyyy として表示されるように、Yii でこれをどこで制御できますか?
私はこれを行いましたが、もちろん、後で他のコントローラーを更新した場合は、これを変更する必要があります。これは良いアプローチではないようです。:(
protected function afterFind ()
{
if(Yii::app()->controller->action->id == 'update')
{
if($this->date <> '')
{
Yii::app()->dateFormatter->formatDatetime($this->date,'short');
}
return parent::afterFind ();
}
}