如何将数据库中的日期与日历树枝中的日期进行比较?
How to compare dates from the database with the dates in the calendar twig?
我想将数据库中的日期与日历中的日期进行比较。
在我的控制器中,我得到了所有日期:
$employments = $this->getDoctrine()->getRepository('Bundle:Employment')
->findActualEmployments();
$freedays = $this->getDoctrine()->getRepository('Bundle:FreeDays')
->findBy(array(), array('date'=>'asc' ) );
foreach($freedays as $free){
$list_freedays[] = date('Y-m-d',strtotime($free->getDate()->format('Y-m-d')));
}
$days = array();
foreach($freedays as $free){
for($i=1;$i<=$maxDay;$i++)
{
$days[$i] = array(
"date" => date('Y-m-d',strtotime($year.'-'.$month.'-'.$i)),
"name_en" => date('D',strtotime($year.'-'.$month.'-'.$i)),
"name_trans" => 'main.'.strtolower(date('D',strtotime($year.'-'.$month.'-'.$i))),
"free_day" => $list_freedays
);}}
return $this->render('Bundle:Holiday:index.html.twig',array(
'employments'=>$employments,
'days' => $days,
'list_freedays' => $list_freedays,
'form' => $form->createView()
));
在我的 Twig 中,我尝试比较如下日期:
<tbody>
<tr>
<th id="col2" align="center">
{% set time = "now"|date("U","Europe/Warsaw") %}
{{['main',date('2015-' ~ j ~ '-01') |date('F')|lower]|join('.')|trans({},'Bundle')}}
</th>
{% for number,day in days %}
{#mark weekend#}
{% if day.name_trans == 'SAT' %}
<th align="center" id="col4" >
{%elseif day.name_trans == 'SUN'%}
<th align="center" id="col4" >
{%elseif (day.date) == (day.free_day[3])%}
{{day.free_day[3]}}
<th align="center" id="col4" >
{%else%}
<th align="center" id="col3" >
{% endif %}
{# day content here #}
{% if numday in range(1,daysInMonth) %}
{{ numday }}
{%set numday = numday + 1 %}
{{ day.name_trans }}</th>
{%endif%}
{%endfor%}
</tr>
</tbody>
如果在这一行“{%elseif (day.date) == (day.free_day[3])%}”中一切正常,我输入一个从 0 到 3 的数字,因为我有四个数组中的日期。如何与数组的所有日期进行比较,而不仅仅是一个。当我将此行更改为“{%elseif (day.date) == (day.free_day)%}”时出现错误 "Notice: Array to string conversion in..."
请帮忙
您可以尝试 in_array method:
//True if day.date is in day.free_day
{%elseif (in_array (day.date , day.free_day))%}
还有一个可选的布尔参数 strict
,您可以根据需要将其设置为 true。这也使得检查数组中的项目也匹配类型。
我找到了一个非常简单的解决方案。我更改此行:
{%elseif (day.date) == (day.free_day[3])%}
对此:
{%elseif (day.date) in (day.free_day)%}
感谢帮助
我想将数据库中的日期与日历中的日期进行比较。
在我的控制器中,我得到了所有日期:
$employments = $this->getDoctrine()->getRepository('Bundle:Employment')
->findActualEmployments();
$freedays = $this->getDoctrine()->getRepository('Bundle:FreeDays')
->findBy(array(), array('date'=>'asc' ) );
foreach($freedays as $free){
$list_freedays[] = date('Y-m-d',strtotime($free->getDate()->format('Y-m-d')));
}
$days = array();
foreach($freedays as $free){
for($i=1;$i<=$maxDay;$i++)
{
$days[$i] = array(
"date" => date('Y-m-d',strtotime($year.'-'.$month.'-'.$i)),
"name_en" => date('D',strtotime($year.'-'.$month.'-'.$i)),
"name_trans" => 'main.'.strtolower(date('D',strtotime($year.'-'.$month.'-'.$i))),
"free_day" => $list_freedays
);}}
return $this->render('Bundle:Holiday:index.html.twig',array(
'employments'=>$employments,
'days' => $days,
'list_freedays' => $list_freedays,
'form' => $form->createView()
));
在我的 Twig 中,我尝试比较如下日期:
<tbody>
<tr>
<th id="col2" align="center">
{% set time = "now"|date("U","Europe/Warsaw") %}
{{['main',date('2015-' ~ j ~ '-01') |date('F')|lower]|join('.')|trans({},'Bundle')}}
</th>
{% for number,day in days %}
{#mark weekend#}
{% if day.name_trans == 'SAT' %}
<th align="center" id="col4" >
{%elseif day.name_trans == 'SUN'%}
<th align="center" id="col4" >
{%elseif (day.date) == (day.free_day[3])%}
{{day.free_day[3]}}
<th align="center" id="col4" >
{%else%}
<th align="center" id="col3" >
{% endif %}
{# day content here #}
{% if numday in range(1,daysInMonth) %}
{{ numday }}
{%set numday = numday + 1 %}
{{ day.name_trans }}</th>
{%endif%}
{%endfor%}
</tr>
</tbody>
如果在这一行“{%elseif (day.date) == (day.free_day[3])%}”中一切正常,我输入一个从 0 到 3 的数字,因为我有四个数组中的日期。如何与数组的所有日期进行比较,而不仅仅是一个。当我将此行更改为“{%elseif (day.date) == (day.free_day)%}”时出现错误 "Notice: Array to string conversion in..." 请帮忙
您可以尝试 in_array method:
//True if day.date is in day.free_day
{%elseif (in_array (day.date , day.free_day))%}
还有一个可选的布尔参数 strict
,您可以根据需要将其设置为 true。这也使得检查数组中的项目也匹配类型。
我找到了一个非常简单的解决方案。我更改此行:
{%elseif (day.date) == (day.free_day[3])%}
对此:
{%elseif (day.date) in (day.free_day)%}
感谢帮助