Моя модель при подтверждении даты ввода, конвертирования формата и сбоя.Модельный формат даты подтверждения
<?php $form = yii\widgets\ActiveForm::begin([
'options' => ['class' => ''],
'fieldConfig' => ['template' => "{label}\n{input}\n{hint}\n{error}"]
]); ?>
<div class="col-md-4">
<?= $form->field($model, 'startDate')->widget(DatePicker::classname(),
[
'language' => 'pt-BR',
'dateFormat' => 'dd/MM/yyyy',
'clientOptions' => [
'yearRange' => '2005:+0',
'defaultDate' => date('d/m/Y', strtotime('-7days'))
],
'options' => [
'class' => 'form-control',
'maxlength' => '10',
'placeholder' => 'Data inicial',
]
]
)->label(false) ?>
</div>
<div class="col-md-4">
<?= $form->field($model, 'endDate')->widget(DatePicker::classname(),
[
'language' => 'pt-BR',
'dateFormat' => 'dd/MM/yyyy',
'clientOptions' => [
'yearRange' => '2005:+0',
'defaultDate' => date('d/m/Y')
],
'options' => [
'class' => 'form-control',
'maxlength' => '10',
'placeholder' => 'Data final',
]
]
)->label(false) ?>
</div>
<div class="col-md-4">
<?= Html::submitButton('Filtrar', ['class' => 'btn btn-primary']) ?>
<?php yii\widgets\ActiveForm::end(); ?>
</div>
И модели:
<?php
namespace frontend\models;
use yii\base\Model;
use Yii;
class Analysis extends Model
{
public $startDate;
public $endDate;
public function rules()
{
return [
['startDate', 'required'],
['startDate', 'date', 'format' => 'dd/MM/yyyy'],
['startDate', 'checkDateToday'],
['startDate', 'checkGAMinDate'],
['endDate', 'required'],
['endDate', 'date', 'format' => 'dd/MM/yyyy'],
['endDate', 'checkDateToday'],
['endDate', 'checkGAMinDate'],
['endDate', 'checkDateGreaterThan']
];
}
public function checkDateToday($attribute, $params)
{
if($this->$attribute <= date('d/m/Y')){
return true;
} else {
var_dump($this->$attribute);
$this->addError($attribute, $attribute . ' não pode ser maior que hoje: ' . date('d/m/Y'));
}
}
public function checkGAMinDate($attribute, $params)
{
if($this->$attribute > date('01/01/2005')){
return true;
} else {
$this->addError($attribute, $attribute . ' não pode ser menor que 01/01/2005');
}
}
public function checkDateGreaterThan($attribute, $params)
{
if($this->endDate < $this->startDate){
return true;
} else {
$this->addError($attribute, 'Data final não pode ser maior que data incial.');
}
}
public function attributeLabels()
{
return [
'startDate' => Yii::t('app', 'Data inicial'),
'endDate' => Yii::t('app', 'Data final'),
];
}
}
Когда я поставил дату, как "25/12/2015" ('d/M/Y'), модель возврата после Validate: «12/25/2015" . Что происходит не так?
Weird, я пытаюсь, но я не могу воспроизвести эту ошибку. В вашей базе данных формат ваших дат совпадает с формами (дд/мм/гггг)? Если нет, то есть, и можете ли вы показать, как вы сохраняете этот атрибут в контроллере? – Clyff
Я не сохраняю эти атрибуты, только проверяю в модели. Я передаю эти даты контроллеру для использования в вызове api. '$ model-> load (Yii :: $ app-> request-> post()) && $ model-> validate()' –