Visão CSV
1Apresentação
A visão CSV permite enviar arquivos CSV feitos a partir de dados PHP.
Por padrão, trata-se de um fluxo simples (assim como na visão JSON) mas, opcionalmente, é possível especificar um nome de arquivo. O CSV será então enviado ao navegador com instruções para tratá-lo como um anexo e oferecer ao usuário a opção de salvá-lo em disco com o nome de arquivo em questão.
2Uso
Aqui está um exemplo de envio de dados em formato CSV:
class ApiController extends \Temma\Web\Controller {
public function getUsers() {
// gravação dos dados que serão enviados
// no fluxo CSV
$this['csv'] = [
['name', 'age', 'size'],
['Alice', 38, 162],
['Bob', 25, 184],
['John Doe', 31, 176],
];
// define o nome do arquivo (opcional)
$this['filename'] = 'userlist.csv';
// define a visão usada
$this->_view('\Temma\Views\Csv');
}
}
- Linhas 5 a 10: Os dados a serem enviados no fluxo CSV são definidos ao serem atribuídos à variável csv.
- Linha 12: Definimos o nome do arquivo CSV (para que ele seja tratado como um anexo) atribuindo-o à variável filename.
- Linha 15: Especificamos que a visão a ser usada para os dados de saída é a visão CSV (e não a visão Smarty usual).
Observação: A visão CSV obviamente não precisa de templates, já que são os dados PHP que são diretamente serializados.
Os dados recebidos terão esta aparência:
name,age,size
Alice,38,162
Bob,25,184
"John Doe",31,176
3Separador
Por padrão, a visão separa os campos no fluxo CSV gerado usando o caractere vírgula (,). É possível usar outro caractere passando-o na variável de template $separator.
Aqui está um exemplo usando ponto e vírgula:
class ApiController extends \Temma\Web\Controller {
public function getUsers() {
// gravação dos dados que serão enviados
// no fluxo CSV
$this['csv'] = [
['name', 'age', 'size'],
['Alice', 38, 162],
['Bob', 25, 184],
['John Doe', 31, 176],
];
// define o nome do arquivo (opcional)
$this['filename'] = 'userlist.csv';
// define o separador
$this['separator'] = ';';
// define a visão usada
$this->_view('\Temma\Views\Csv');
}
}
Os dados recebidos terão esta aparência:
name;age;size
Alice;38;162
Bob;25;184
"John Doe";31;176