segunda-feira, 10 de setembro de 2012

Download de ficheiro em Symfony

Por vezes esta simples acção pode ser um bocado complicada. Vamos então ver como podemos fazer o download de um ficheiro de forma simples em Symfony.

Criar-mos a acção executeDownload() e, após criar o ficheiro basta colocar estas poucas linhas:

$resp = $this->getResponse();

    $resp->setContentType('text/csv');
    $resp->setHttpHeader(
              'Content-Disposition', 
              'attachment; filename="' . basename($file_path) . '"');
    $resp->setContent(file_get_contents($file_path));

    return sfView::NONE;

segunda-feira, 3 de setembro de 2012

Widgets Template - Row Format

Personalizar os formulários do Symfony pode ser um castigo, a menos que consigamos perceber como funcionam e as coisas tornam-se mais simples.

Até ao dia de hoje, sempre que queria modificar um formulário editava o template e reescrevia o html.

posso fazer o mesmo com apenas estava linha de código no formulário:
$this->widgetSchema
     ->getFormFormatter()
     ->setRowFormat('%label%%field%%help%%hidden_fields%');

Podemos utilizar os seguintes atributos:

%label%
      %field%
      %error%
      %help%
      %hidden_fields%

quarta-feira, 8 de agosto de 2012

Criar um validador personalizado em symfony

Por vezes os Validators disponíveis no Symfony não são sufientes para validar os nossos campos, principalmente quando um campo depende de outro, p.e.:
se cmb_a is cheched e cmb_b is checked

       então

     //acção

       senão

     //erro!

Para tal, necessitamos de criar Validators personalizados e aplica-los ao nosso campo. Para tal na nossa classe de formulário acrescentamos as seguintes linhas:

public function configure()
{
    parent::configure();

    $this->validatorSchema['my_field'] = new sfValidatorCallback(
                    array('callback' =>
                        array($this, 'validateMyField')
                    )
    );

}

public function validateMyField($validator, $value)
{
    /* All my action goes here */
    $tainted_values = $this->getTaintedValues();

    if ($tainted_values['my_field_2'] > 0 && $value != '')
    {
        return $value;
    }
    else
    {
        throw new sfValidatorError($validator, "I guess something goes wrong here!");
    }
}


No método validateMyField podemos aceder aos valores todos do formulário obtendo os Tainted values disponíveis utilizando o método getTaintedValues da classe dos formulários.

Realizadas as verificações pretendidas devolvemos o valor ($value) do campo validado ou despoletamos um erro que será apresentado pelo método renderError do formulário.










domingo, 1 de julho de 2012

Print Screen em MacOsX

Exitem diferentes formas de fazer print screen no Mac OS X.

Para fazer um print screen da ecrã completo:
Prima uma vez ⌘ + Shift + 3
Com rato prima no ecrã

Para capturar apenas um porção do ecrã:
Prima uma vez ⌘ + Shift + 4
O rato passa a ser uma cruz com as coordenas do sitio onde está, só tem de clicar no canto superior esquerdo da zona que pretende capturar, arrastar até ao canto inferior direito e largar o botão do rato.

Para capturar uma janela de uma aplicação completa:
Prima uma vez ⌘ + Shift + 4
Prima agora a barra de espaços, o cursor do rato passa a ser uma câmara, clique na janela que pretende capturar
Todas os print screens vão para o Desktop.

terça-feira, 5 de junho de 2012

Android - Draw Something

O Draw Something é um jogo viciante que nós poderá levar a perder horas a desenhar (ou a pensar que desenhamos) com os nossos amigos.

A base do jogo é muito parecida com a do Pictionary, desenhar e esperar que alguém adivinhe. Neste caso são nos propostas 3 palavras com valores diferentes, escolhemos uma e desenhamos o melhor que conseguimos para que o nosso amigo consiga adivinhar. Na volta seguinte, o amigo que adivinhou desenha para nós.



Inicialmente o jogo tem um "enorme" leque de 4 cores apenas, mas pode ser facilmente aumentado ganhando moedas e trocando-as por paletes de cores.



Este jogo é multi-plataformas, poderá jogar contra amigos que o tenham instalado num iPhone.

qrcode

Para instalar a partir da imagem sigam este post: Barcode Scanner

quarta-feira, 22 de fevereiro de 2012

Geocaching offline

Para as pessoas que não têm plano Internet poderem utilizar o c:geo em modo offline, necessitam fazer download dos mapas. Eu utilizei os da mapsforge (Portugal).

Façam download dos mapas e coloquem num directório à escolha no telemóvel.
Na aplicação c:geo acedam a Settings e naveguem até "Map Sources" e seleccionem as opções
OSM: Offline e o caminho para o vosso mapa.





A partir de agora se forem ao live map, o mapa seleccionado será o guardado no telemóvel.

Para armazenar as caches no telemóvel têm 2 formas de o fazer. Pode pesquisar pela aplicação (Search) ou no site. Se quiser pesquisar e enviar directamente para o telemóvel.

Para enviarem as caches do browser para o telemóvel directamente sigam este tutorial (link)




Links:
Mapa Portugal
Lista completa


Update: Para saber como instalar o send2cgeo no seu computador visite este link

quinta-feira, 12 de janeiro de 2012

Datas em PHP

Fartei-me de tanto procurar por isso aqui vai uma série de métodos para obter datas em PHP.

Segunda-feira desta semana:
date('Y-m-d', strtotime(date('Y')."W".date('W')))

Domingo desta semana:
date('Y-m-d', strtotime(date('Y')."W".date('W')."7"))

Quarta-feira da 5ª semana de 2056:
date('Y-m-d', strtotime("2056W53"))

Isto funciona assim:

date('Y-m-d', strtotime(."W"..))

Números da semana
Segunda: 1
Terça:2
...
Domingo: 7