Laravel. Na verdade, quando falamos em pegar dados enviados pelo usuário, seja via formulário ou diretamente na URL, estamos falando da Request. Caso não saiba o que é Request temos esse artigo que fala sobre alguns conceitos HTTP.
O Laravel possui uma classe específica para trabalhar com os dados enviados na requisição. Essa classe tem o nome de Request
e fica no namespace \Illuminate\Http
. Ela possui uma série de métodos que facilitam obtenção das informações enviadas pelo cliente.
Geralmente o local onde mais usamos os dados enviados na requisição é o Controller. No Laravel, podemos injetar instâncias diretamente nos métodos do controller, isso nos permite usar facilmente a instância da classe Request.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function store(Request $request)
{
//Usamos a instância para chamar os métodos da requisição
$request->...();
}
}
O modo mais simples de enviar informações do usuário para o servidor através da requisição é a URL. Usando um padrão específico podemos passar dados no formato chave valor, veja a URL abaixo:
http://servidor.test/meurecurso?escola=Treinaweb&curso=Laravel
Através dela estamos passando os parâmetros escola e curso que possuem respectivamente os valores TreinaWeb e Laravel.
Para obter todos os dados passados na URL usamos o método query
sem passar nenhum parâmetro $request->query()
. O Laravel pega todos os parâmetros e retorna em forma de array:
array:2 [
"escola" => "Treinaweb"
"curso" => "Laravel"
]
O método query pode ser usado para obter apenas um valor, basta passar o nome da chave no primeiro argumento. Caso a chave não esteja declarada na URL ainda é possível definir um valor padrão no segundo argumento.
$request->query("escola");
$request->query("escola", "Valor padrao");
Os dados enviados via POST estão localizados no corpo da requisição. O Laravel possui alguns métodos que nos permitem obter essas informações para serem usadas na nossa aplicação.
Para conseguirmos enviar informações via POST precisamos criar um formulário que será submetido para uma rota qualquer da nossa aplicação. Vamos usar como base o seguinte formulário:
<form action="http://servidor.test/meurecurso" method="POST">
{{ csrf_field() }}
Nome <input type="text" name="name" value="Elton"> <br>
Idade <input type="text" name="age" value="27"> <br>
Email<input type="text" name="email" value="elton.fonseca@treinaweb.com.br"> <br>
<input type="submit" value="Enviar">
</form>
OBS: o helper csrf_field
retorna um input do tipo hidden com o token que confirma que o formulário está sendo realmente enviado pela nossa aplicação.
O primeiro método que vamos falar é o all()
ele retorna todos os dados em formato de array:
array:3 [
"name" => "Elton"
"age" => "27"
"email" => "elton.fonseca@treinaweb.com.br"
]
Outro método que podemos usar é o input
. Ele retorna um único valor e podemos definir um valor padrão como segundo argumento, caso a chave não seja encontrada:
$request->input('name');
$request->input('name', 'Nome padrão');
Temos também os métodos only
que busca apenas os parâmetros especificados nele e o método except
que trás todos parâmetros, exceto os especificados nele. Podemos passar uma lista de argumentos ou um array:
$request->only('name', 'email');
$request->only(['name', 'email']);
$request->except('age');
$request->except(['age']);
Todas as chamadas acima retornam a mesma informação:
array:2 [
"name" => "Elton"
"email" => "elton.fonseca@treinaweb.com.br"
]
Uma observação importante! Todos os métodos que vimos nesse tópico all()
, input()
, only()
e except()
pegam valores passados via POST e também via GET na URL, dando preferência para os parâmetros POST quando eles possuem o mesmo nome. Enquanto o query
, que vimos no tópico anterior, pega apenas os parâmetros passados via GET.
O Laravel cria propriedades dinamicamente para os parâmetros enviados na requisição, essas propriedades facilitam o acesso aos dados e torna o código mais limpo.
$request->name; //Treinaweb
$request->age; //27
$request->email; //elton.fonseca@treinaweb.com.br
É possível obter dinamicamente os parâmetros enviados via GET e POST.
Existem algumas situações onde precisamos usar os dados da requisição em locais onde não temos fácil acesso a instância da requisição, nesses casos podemos usar o helper request
. Quando chamamos o helper sem passar nenhum argumento ele retorna uma instância da classe request, a partir dela podemos chamar qualquer método da Request:
request()->all();
request()->input("name");
request()->only("email");
//...
Ainda é possível pegar os dados do parâmetro passando o nome do argumento e o valor padrão, para caso o parâmetro não seja encontrado:
request("name", "Nome padrão");
Outra situação comum é precisamos verificar se um parâmetro foi passado na requisição. Para isso usamos o método has()
. Ele retorna verdadeiro independente do valor passado, mesmo que o valor seja vazio:
if ($request->has('name')) {
//
}
Caso precise verificar se o parâmetro foi passado na requisição e não é vazio, podemos usar o método filled()
:
if ($request->filled('name')) {
//
}
O Laravel possui um método especial chamado file
para obter os arquivos. Também é possível usar as propriedades dinâmicas:
$request->file('image');
$request->image;
Esse método retorna uma instância da classe Illuminate\Http\UploadedFile
, ela já possui todos os recursos necessários para salvar o arquivo de maneira simples. Podemos simplesmente chamar o método store
para salvar o arquivo:
$request->file('image')->store('local');
Nesse post nós vimos os principais métodos para obtenção de parâmetros enviados pelo usuário através da requisição. Além desses dados a requisição ainda possui diversas outras informações que são enviadas pelo cliente da nossa aplicação. A documentação do Laravel possui vários exemplos práticos de como obter esses dados.
Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. @eltonfonsecadev
Todos os artigosNeste artigo veremos o que é Laravel e algumas de suas características.
Nesse post veremos alguns passos simples que precisamos nos atentar ao subir nossa aplicação para o...
Aprenda como realizar buscas textuais rápidas e eficientes independentemente da quantidade de regist...
Aprenda como instalar e configurar o ambiente de desenvolvimento PHP Laravel no MacOS.
Aprenda como instalar e configurar o ambiente de desenvolvimento PHP Laravel no Linux.
Aprenda como instalar e configurar o ambiente de desenvolvimento PHP Laravel no Windows.
Aprenda a configurar um completo ambiente PHP usando o Laravel Homestead.
Um dos pontos mais importantes quando estamos trabalhando APIs é o retorno dos dados. Veja como melh...
Nesse artigo falaremos um pouco sobre o que é serialização de dados e quais os principais recursos q...
Um dos problemas mais clássicos de aplicações que utilizam MVC é a camada de view concentrar lógica...
Aprenda como os eventos do Eloquent podem te ajudar a diminuir a quantidade de lógica nos controller...
Veja como é possível, a partir dos escopos, reutilizar pequenos trechos de código no Eloquent e deix...