Можно ли сделать этот код более маленьким:
'rowOptions'=>function($model){
$dun="";
if(date("Y-m-d",strtotime($model->data_okon. "-9 days")) == date("Y-m-d"))
{
$dun='success';
}
if(date("Y-m-d",strtotime($model->data_okon. "-8 days")) == date("Y-m-d"))
{
$dun='success';
}
if(date("Y-m-d",strtotime($model->data_okon. "-7 days")) == date("Y-m-d"))
{
$dun='success';
}
if(date("Y-m-d",strtotime($model->data_okon. "-6 days")) == date("Y-m-d"))
{
$dun='success';
}
if(date("Y-m-d",strtotime($model->data_okon. "-5 days")) == date("Y-m-d"))
{
$dun='success';
}
if(date("Y-m-d",strtotime($model->data_okon. "-4 days")) == date("Y-m-d"))
{
$dun='warning';
}
if(date("Y-m-d",strtotime($model->data_okon. "-3 days")) == date("Y-m-d"))
{
$dun='warning';
}
if(date("Y-m-d",strtotime($model->data_okon. "-2 days")) == date("Y-m-d"))
{
$dun='danger';
}
if(date("Y-m-d",strtotime($model->data_okon. "-1 days")) == date("Y-m-d"))
{
$dun='danger';
}
if(date("Y-m-d",strtotime($model->data_okon. "-0 days")) == date("Y-m-d"))
{
$dun='danger';
}
return [
'class'=>$dun,
];
},
Используй сравнение дат, приведенных к одному виду (это работает)
'rowOptions'=>function($model){
$dun = "success";
if( date("Y-m-d", strtotime($model->data_okon. "-4 days")) <= date("Y-m-d") ){
$dun = 'warning';
}
if( date("Y-m-d", strtotime($model->data_okon. "-2 days")) <= date("Y-m-d") ){
$dun = 'danger';
}
return [
'class' => $dun,
];
},
Если очень важно, чтобы $dun по умолчанию был пустым, добавь еще одно условие
Одно из решений:
$sub = СравниваемаяДата - датаИзБазы;
if($sub < 9 && $sub >= 4){
$dun='success';
}
if($sub < 4 && $sub >= 2){
$dun='warning';
}
if($sub < 2){
$dun='danger';
}
'rowOptions' => function($model) {
$dun = "";
for($i = 9; $i <= 0; $i--) {
if(date("Y-m-d", strtotime($model->data_okon."-".$i." days")) == date("Y-m-d")) {
switch($i) {
case 9: case 8: case 7: case 6: case 5:
$dun = 'success'; break;
case 4: case 3:
$dun = 'warning'; break;
case 2: case 1: case 0:
$dun = 'danger'; break;
default: break;
}
}
}
return ['class' => $dun];
},
И еще короче )
foreach ( [9 => 'success',4 => 'warning',2 => 'danger'] as $day => $action)
$dun = date('Y-m-d', strtotime($model->data_okon. "-{$day} days")) <= date('Y-m-d') ? $action : "";
Ещё короче
'rowOptions'=>function($model){
$dun="";
for ($i=9; $i<=0; $i--){
if(date("Y-m-d",strtotime($model->data_okon. "-".$i." days")) == date("Y-m-d"))
{
if ($i<=5) $dun = 'success';
else if ($i<=3) $dun = 'warning';
else $dun = 'danger';
break;
}
}
return [
'class'=>$dun,
];
},
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Есть две категории баннеры и слайдеры, и форма в виде модального окна с помощью которой мы добавляем элемент либо в одну либо...
Для диплома предложили создать систему для профориентационного отделаВкратце это конструктор тестов
как отправить письмо на почту в php, если почта указано в таблице human в столбце e_mail, но вот письмо должно отправляться по условию что у него заканчивается...
Есть на сервере файл получатель get_postphp: