Laravel 5.7: Como criar “form validations” ao seu projeto web

laravel-validação

Voltando a nossa Série, finalizamos o último artigo falando sobre algumas implementações rápidas do Laravel Controller. Assim, neste artigo, vamos focar na parte das validações de dados em formulários no Laravel 5.7.

O que são as validações (validations) no Laravel 5.7

Primeiramente, o Laravel utiliza de diversas regras para conseguir validar qualquer dado que está entrando em uma aplicação. Estas regras são essenciais para que tenhamos mais segurança, controle, estabilidade e melhor usabilidade para o usuário.

Para isto ele utiliza, por padrão, a Classe “ValidateRequests”. Visto que ela traz métodos bem convenientes para validar requisições HTTP ao nosso controller, bem como retornar, para o Controller, o sucesso ou o erro, de acordo com a regra programada.

Criando a primeira validação

Colocando a mão na massa, vamos abrir o meu projeto com o Laravel 5.7. Neste exemplo, vou utilizar o “ProductsController” para configurar as validações.

Caso você não tenha acompanhado nossa série, deixo o link para nosso artigo sobre Controllers no Laravel. Nele mostro sobre a criação deste controller.

Aqui, iniciaremos uma validação simples dos dados que salvo na função store(). Aqui existem 2 maneiras:

A primeira é mais simples e você pode incluir no próprio Controller com a função $request->validate();

public function store(Request $request){    $validatedData = $request->validate([      'product_line_id' => 'required|integer',      'description' => 'required|alpha_num',      'expiration_time' => 'required|date',      'price' =>['required',     'regex:/^\d+([.,]\d{1,X})?$]/'] ]);    $data = [      'product_line_id' => request('product_line_id'),      'description' => request('description'),      'expiration_time' => request('expiration_time'),      'price' => request('price') ];    Product::create($data);    return back();  } 

Para a validação precisava instanciar a “Request” da função utilizando o type-hint. É através dela que faremos a validação. A partir daí, apenas chamamos a função validate() passando o array com todos os campos que validaremos e suas respectivas regras.

No caso, utilizamos as regras básicas de campo requerido e o tipo de dado que queremos que venha. No campo “price”, utilizei a regra de regex para validar o valor monetário. Já que não encontramos nada pronto do Laravel, buscamos na internet por um regex que fizesse isso.

Caso queira saber todas as validações que o Laravel 5.7 permite, siga para o fim deste artigo.

Como podem ver abaixo, é um simples regex que valida a virgula dos centavos. Mas, para não ter problemas de compatibilidade com outra regra, o regex exige a utilização de um array ao invés da simples string de regras.

'price' =>[   'required',   'regex:/^\d+([.,]\d{1,X})?$]/' ] 

A segunda forma é usando o Form Request Validation

Ela é relativamente mais complexa, mas também deixa suas validações mais organizadas.

Aqui, criaremos uma classe Request personalizada que terá estas mesmas regras. Para isto basta ir ao SSH do seu servidor. No caso, utilizamos nossa instância de hospedagem cloud e digitar o comando abaixo:

php artisan make:request StoreProduct

Agora, você verá na pasta Http do Laravel 5.7, uma pasta Requests com a classe StoreProduct.php.

namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreProduct extends FormRequest {   public function authorize() {       return true;   }   public function rules() {     return [       //     ];   } } 

Na função rules() adicionaremos as regras que haviamos colocado no Controller. O arquivo ficará assim então:

 public function rules() {   return [     'product_line_id' => 'required|integer',     'description' => 'required',     'expiration_time' => 'required|integer',     'price' =>['required','regex:/^\d+([.]\d{1,2})?$/']   ]; }

Com as regras definidas, basta fazer o type-hint  na função store() do Controller e tudo deve funcionar.

 // Adiciono a classe StoreProduct no começo do arquivo use App\Http\Requests\StoreProduct; ... // E então faço o type-hint na função store() public function store(StoreProduct $request){   $data = [     'product_line_id' => request('product_line_id'),     'description' => request('description'),     'expiration_time' => request('expiration_time'),     'price' => request('price')   ]; ... 

A partir daí, o Laravel já vai entender que a request que virá para esta função deverá passar pela validação do “StoreProduct”.

Imprimindo a validação para o usuário.

Apenas com a configuração anterior, não conseguiremos ver se alguma validação foi feita. Isto porque só veremos algum resultado imprimindo isto em uma view.

Mais pra frente apresentaremos melhor sobre as Views. Mas, por hora, criamos a view products.blade.php para adicionar um produto e validar os dados.


@if($errors->any())
@foreach($errors->all() as $error) {{ $error }} @endforeach
@elseif(session()->has('success'))
{{ session('success') }}
@endif
Adicionar um novo produto
{{csrf_field()}} Selecione uma linha de produto
@foreach($product_lines as $product_line) {{$product_line->description}} @endforeach
Enviar

Para relembrar, a view Products.blade.php foi vinculada a função index do “ProductsController” no artigo anterior. Agora, estamos efetivamente criando ele com o conteúdo acima.

Antes de explicar o código acima, vamos entender o fluxo do Form Request Validation no Laravel 5.7. Ao dar o type-hint do Form Request Validation na função do Controller, você está dizendo ao Laravel que esta validação será acionada antes de executar qualquer ação da função. Se os dados forem validados corretamente, o processo segue. Senão, o usuário é redirecionado automaticamente para a rota anterior. Neste caso, mostrando a view “Products”.

Agora voltando ao código da View. Nas primeiras linhas, verificamos se existe alguma coisa na variável $errors. (Variável já implementada pelo Laravel 5.7).

$errors->any() 

Se houver alguma coisa nele, fazemos a varredura de todos os erros e imprimimos na <li>.

<div class="error">   <ul>   @foreach($errors->all() as $error)     <li>{{ $error }}</li>   @endforeach   </ul> </div>

Se não houver nenhum erro, inserimos a mensagem de sucesso.

[html]@elseif(session()->has('success'))   <div class="success">       {{ session('success') }}   </div>   @endif [/html] 

Personalizando as mensagens da validação

Por fim, só precisamos editar mensagens personalizadas para os nossos erros. Para isto, adicionaremos a função messages() à classe “StoreProducts”.

 public function messages() {   return [     'required' => 'O campo :attribute é requerido',     'description.min' => 'O campo :attribute deve ter no mínimo 3 caracteres',     'expiration_time.min' => 'O campo :attribute deve ser a quantidade de dias',     'price.regex' => 'O campo :attribute deve conter um valor monetário. Ex.: 2.25',   ]; }

Como podemos ver no código acima, a função messages() apenas retorna um array com as mensagens específicas de cada regra. Para definir uma mensagem geral à uma regra, apenas utilizamos a regra como no exemplo:

// Defini que todo campo requerido deverá ter esta mensagem.  // A tag ':attribute' será substituída pelo nome do campo em questão. 'required' => 'O campo :attribute é requerido',

Para adicionar uma mensagem específica ao campo em questão, basta coloca o nome_do_campo.nome_da_regra.

Conclusão

Agora que conseguimos fazer as validações dos dados inseridos em nosso formulário, garantimos a integridade do banco e melhoramos a interação do usuário com cada tela.

Você sabe o que é Hospedagem de Sites Cloud?

Cloud_computing

O termo cloud computing é cada vez mais utilizado no mundo digital. Entretanto, muitas pessoas ainda desconhecem o real significado de computação em nuvem.

De fato, o termo confunde algumas pessoas. Logo, dificuldades de entender e comparar os serviços se fazem presente. Por isso, vamos explicar neste post informações cruciais que você precisa saber antes de contratar um serviço de hospedagem cloud.

Basicamente, podemos definir hospedagem cloud como um serviço de hospedagem de sites que não utiliza apenas um servidor web físico, mas sim vários deles.

Como funciona a Hospedagem Cloud

Ao distribuir, entre esses servidores, os recursos disponíveis em uma hospedagem, a sobrecarga diminui. Com isso, é possível perceber a otimização da capacidade e do processamento desses servidores.

Em outras palavras, o cloud computing traz vários benefícios para o seu site ou aplicação.

Para Quem é a Hospedagem Cloud?

A hospedagem cloud é uma solução tecnológica relativamente nova. Apesar de ser bem interessante, não é recomendada para todos os sites na internet.

Nesse ínterim, indicamos esse tipo de hospedagem para sites e sistemas online considerados de grande porte. Sites que tenham um tráfego maior, demanda por mais recursos, espaço e performance. Ou seja, recursos exclusivos para cada uma dessas necessidades.

Além disso, é essencial para a redução de custos operacionais que dizem respeito à administração de servidores e à infraestrutura de TI de sua empresa.

Vantagens da Hospedagem Cloud

Uma das maiores vantagens da hospedagem cloud é a possibilidade de pagar sob demanda. Isso é, ajustando o plano de acordo com o volume de tráfego e tamanho do seu site ou aplicação.

Além disso, podemos citar outras vantagens que certamente contarão positivamente na hora de estabelecer as estratégias de crescimento do seu negócio:

  • Escalabilidade
  • Segurança dos dados
  • Controle de custos
  • Maior capacidade de processamento
  • Menor risco de ficar offline
  • Maior rapidez

Conclusão

Nosso objetivo com este artigo é que você entenda o que é e como funciona a Hospedagem Cloud.

Além disso, este artigo mostrou que nem todos os sites necessitam de uma estrutura em nuvem para sua hospedagem. Por isso citamos as particularidades de projetos que devem utilizar a Hospedagem Cloud.

Ficou alguma dúvida? Consulte a nossa central de ajuda ou deixe um comentário!

Conheça nossos planos para Hospedagem Cloud, com preços sob demanda para cada uma das necessidades.

DialHost presente no iMasters InterCon, edição 2018

DialHost no Intercon 2018

O InterCon é um evento organizado pelo iMasters e já está em sua 14ª edição, sempre focado em desenvolvimento web de alto nível, o que fez se posicionar como a maior conferência dev da América Latina.

Este ano, o InterCon irá reunir cerca de 1800 developers em 3 grandes auditórios na capital paulista, e a DialHost já tem presença confirmada. 🙂

Conheça os Keynotes e palestrantes já confirmados no evento

Rasmus Lerdorf
Distinguished Engineer
Etsy

Maurício Maujor
Divulgador dos Padrões Web
Maujor.com

Nelson Senna do Amaral
Desenvolvedor
BriteCore

Elton Minetto
CTO
CodeNation

Marcela Godoy
Software Engineer
PayCertify

Jomar Silva
Technical Evangelist
Intel

Augusto Pascutti
Developer
Easy

Letticia Nicoli
Desenvolvedora
Lambda3

Thiago Adriano
Arquiteto de Software
TV Bandeirantes

Tobias Sette
Arquiteto de Software
Talentify.io

Acesse o site do evento

Conheça a Hospedagem de sites compartilhada

Hospedagem de sites compartilhada

A hospedagem de site compartilhada atualmente é a mais comum entre os serviços disponíveis no mercado. Conheça neste post para quem é recomendada, quais os recursos e como escolher bem o serviço

A hospedagem compartilhada (do inglês shared hosting) é a mais comum e mais econômica disponível no mercado.

Neste tipo de host, seu site é hospedado em um local na internet que armazena dados de outros sites.

Na prática, o servidor compartilhado permite que todos os sites hospedados possam utilizar recursos de hospedagem. Por padrão, esses recursos já estão configurados, sem que seja necessária a instalação para cada site hospedado.

Para quem é a Hospedagem Compartilhada?

A hospedagem de site compartilhada é indicada para pessoas e negócios que possuam sites considerados de pequeno porte. Ou seja, possuam tráfego proporcional ao seu tamanho.

Podemos chamar de pequeno porte: blogs pessoais, sites institucionais e as pequenas lojas virtuais. Em outras palavras, sites que demandam pouco espaço em disco e pouco tráfego.

A principal vantagem desse tipo de hospedagem é o preço. Tendo em vista que o servidor e os recursos são compartilhados, o preço fica bem mais atrativo.

Embora estejam juntos e em um servidor compartilhado, seus dados sempre estarão seguros. Cada cliente possui um espaço individual, devidamente protegido dentro do servidor, com acessos individuais a cada conta.

Recursos de hospedagem compartilhada

Quem hospeda um site na internet, certamente busca uma empresa que ofereça recursos para otimizar o tempo e os custos com a sua utilização.

Esses recursos devem ser observados antes mesmo da finalização da contratação. Destacamos abaixo alguns deles:

Sistema operacional

Como já mencionado, existem diversas linguagens de programação que são utilizadas no desenvolvimento de sites e aplicações. Algumas das mais conhecidas são o HTML, o PHP, o ASP, o .NET, entre outras.

Cada uma dessas linguagens possui a sua particularidade e exige recursos tecnológicos diferentes.

A linguagem PHP, por exemplo, geralmente utiliza a hospedagem em ambientes linux.

Já linguagens como ASP (Active Server Pages), utilizam a hospedagem em ambientes Windows.

Na hora de escolher, busque suporte da empresa que irá hospedar o seu site ou do seu desenvolvedor para ajudar na escolha do melhor serviço.

Domínio, subdomínios e sites

Os domínios na internet são os nomes que damos aos sites de nossa propriedade. Por exemplo, www.seudominio.com.br.

Em geral, dependendo do plano de hospedagem escolhido, a empresa poderá oferecer opção de você hospedar um ou mais domínios.

Vale lembrar que domínios estacionados (ou redirecionados) ou subdomínios (como www.blog.seudominio.com.br) não entramneste limite.

E-mail

Um e-mail, ou correio eletrônico, é um dos mais antigos canais de comunicação digital. Ele permite enviar e receber mensagens, além de outros recursos.

Ele é, sem dúvida, um recurso básico que qualquer empresa de hospedagem deve oferecer.

Tenha um e-mail personalizado com o nome do seu domínio. Quando você tem um e-mail assim (seunome@seudomínio.com.br), certamente estará transmitindo muito mais credibilidade e profissionalismo aos seus clientes.

Existem dois itens que devem ser observados: a quantidade de e-mails por conta e o tamanho em disco de cada uma dessas contas.

Isso irá proporcionar mais flexibilidade para você e toda a sua equipe. Portanto, fique atento a estes dois itens antes de contratar sua hospedagem de site.

Espaço em disco

O recurso tamanho em disco determina a quantidade de espaço que sua conta terá no servidor.

Em alguns casos, esse tamanho é contado apenas no site, códigos e imagens, de forma separada dos outros recursos, como e-mails, banco de dados, etc. Outros, porém, contam tudo: site, e-mail, banco de dados, códigos e arquivos.

Ao escolher o seu serviço de hospedagem de site compartilhada, avalie também estas questões.

O tamanho em disco para armazenar os seus e-mails, bancos de dados, arquivos em geral deve estar dentro do que você espera para a sua empresa.

Tráfego, largura de banda e transferência

Este recurso diz respeito à quantidade de visitas que o seu site recebe.

Existem muitas empresas que divulgam tráfego ilimitado em seus planos, mas esta é uma excelente questão para se pensar.

Imagine sites com grande volume de visitas, por exemplo, como o Google ou Youtube, sendo hospedados em um serviço comum de hospedagem de site.

Só de pensar, já dá para imaginar que sites com grande volume de acessos necessitam de uma hospedagem muito mais robusta do que as mais básicas, certo?

Por isso, é muito importante que, ao contratar um serviço de hospedagem de sites, você fique atento às propagandas exageradas. Cada caso é um caso que deverá ser criteriosamente analisado.

Conclusão

Em poucas palavras, sites pequenos, com tráfego pequeno em planos mais básicos. Já os sites maiores, com volume maior de visitas e acessos, obviamente necessitam de um serviço mais dedicado e específico, como hospedagem cloud.

Conheça os planos de hospedagem de sites compartilhada da DialHost e fique tranquilo(a)!