11 de novembro de 2010

Calendário JQuery nos filtros

Solução: sfFormExtraPlugin
Tutorial para o symfony 1.4: este senhor explica bem como fazer isto.

Para alterar o formato default da data (MM/DD/YYYY) para DD/MM/YYYY nos filter's (é similar para os forms) editem o ficheiro lib/filter/doctrine/moduloFilter.class.php:
public function setup()
  {
 parent::setup();

 $this->widgetSchema['created_at'] = new sfWidgetFormFilterDate(
  array(
   'from_date' => new sfWidgetFormJQueryDate(
     array(
      'image' => '/images/calendar.png',
      'culture' => 'pt',
      'date_widget' => new sfWidgetFormDate(
        array(
         'format' => '%day%/%month%/%year%'
        )
      )
     )
   ),
   'to_date' => new sfWidgetFormJQueryDate(
     array(
      'image' => '/images/calendar.png',
      'culture' => 'pt',
      'date_widget' => new sfWidgetFormDate(
        array(
         'format' => '%day%/%month%/%year%'
        )
      )
     )
   )
  )
 );

Output de ficheiro .CSV e forçar o seu download

Para forçar o download dum ficheiro .csv basta editar modulo/config/view.yml:
nomedaactionSuccess:
  has_layout: false
  http_metas:
    content-type: application/msexcel

Se quisermos inferir um determinado nome a esse ficheiro, na modulo/actions/action.class.php:
public function executeNomedaaction(sfWebRequest $request) {
...
    $this->getResponse()->addHttpMeta('Content-disposition', "attachment; filename=nopme_do_ficheiro.csv");
...

Aceder aos 'filters' definidos no backend

Como certamente ja repararam, sempre que aplicam um filtro num backend do symfony, ele fica em sessão e mesmo que naveguem entre módulos ele é preservado.

Para acederem aos filtros aplicados podem usar o seguinte numa action:

$this->getUser()->getAttributeHolder()->getAll('admin_module')

Ou na view:

sfContext::getInstance()->getUser()->getAttributeHolder()->getAll(’admin_module’);