2014-10-28 89 views
3

我需要使用数据库中的数据填充TWIG中的表。一切都很好,除了这个:Symfony2 DATEDIFF函数

我需要有与DATEDIFF属性的列来获得天数。

TODAY-dateFromDateBase

的问题是: 如何获得的天数在循环中树枝?

这里是我的枝杈:

<table> 
      <thead> 
      <tr> 
       <form action="" method="post" {{ form_enctype(searchform) }} class="form-index-permits"> 
        <td>L.p </td> 
        <td>ID PRZEPUSTKI {{ form_widget(searchform.PermitId) }}</td> 
        <td>Name{{ form_widget(searchform.Permitname) }}</td> 
        <td>Surname {{ form_widget(searchform.Permitsurname) }}</td> 
        <td>Company {{ form_widget(searchform.Company) }}</td> 
        <td>GW {{ form_widget(searchform.Contractor) }}</td> 
        <td>Dayleft {{ form_widget(searchform.Dayleft) }}</td> 
        <td>End date {{ form_widget(searchform.date, { 'attr': {'class': 'datepicker'} }) }}</td> 

       </form> 
      </tr> 

      </thead> 
      {% for permit in permitcollection %} 
       <tbody> 
       <td>{{ loop.index }}</td> 
       <td>{{ permit.getPermitid()|number_format(0, '.', ' ') }}</td> 
       <td>{{ permit.getPermitname() }}</td> 
       <td>{{ permit.getPermitsurname() }}</td> 
       <td>{{ permit.getPermitsCompany().getName() }}</td> 
       <td>{{ permit.getPermitsContractor().getName() }}</td> 
       <td> HERE I WANT TO DISPLAY DAYS LEFT</td> 
       <td>{{ permit.getExpirationdate()|date('Y-m-d') }}</td> 

       </tbody> 
      {% endfor %} 
     </table> 

是这样的可能吗?

{{ permit.getExpirationdate()|date('Y-m-d') - "now"|date('Y-m-d') }} 
+0

我觉得非常有用[碳PHP库(https://github.com/briannesbitt /碳)。我建议你看看[文档的这一部分](https://github.com/briannesbitt/Carbon#difference-for-humans),并将其作为树枝扩展。希望这个帮助 – Matteo 2014-10-28 10:57:52

+0

不能你在控制器中计算并添加到你的viewmodel? – 2014-10-28 11:12:48

回答

4

首个解决方案(推荐) “使用现有的图书馆”:

可以使用KnpTimeBundle

在枝条: 这比较当前日期:

{# Returns something like "3 minutes ago" #} 
{{ time_diff(permit.expirationDate) }} 

这与其他日期比较:

{# Returns something like "3 minutes ago" #} 
{{ time_diff(permit.expirationDate, anotherDate) }} 

第二种解决 “自己动手”:

制作DIFF通过PHP函数:

$calcFrom = permit.getExpirationdate() 

$now = new \DateTime('now'); 
$now->diff($calcFrom)->format("%a") 

,并使其可通过Twig extension或直接在实体的辅助方法。

另一种可能的解决方案是编写注册custom DQL Function做的工作在仓库中

希望这有助于

+0

是这样的可能吗?{{permit.getExpirationdate()| date('Ym-d') - “now”| date('Ym-d')}} – Cre3k 2014-10-28 11:05:41

+0

@ Cre3k,我以任何其他方式更新我的回复 – Matteo 2014-10-28 11:12:24

+0

没有新的Bundle?;/\ – Cre3k 2014-10-28 11:28:47