Introdução
Nosso objetivo nesse artigo é conduzi lo passo a passo na criação de uma aplicação PHP utilizando o Laravel Framework desde o início de uma idéia de uma aplicação até uma aplicação implantável.Faz se necessário a instalação de alguns aplicativos para que seu ambiente para possa utilizar o Framework Laravel. Abaixo listo os softwares necessários:
- Instalação do ambiente PHP local: Wamp Server;
- Sistema de Gerenciamento de Banco de Dados: MYSQL;
- Infraestrutura de teste de software: PHPUNIT;
- Plataforma Java Script do lado do servidor: Node JS;
Planejamento é uma etapa fundamental no desenvolvimento de um projeto de software web. Cada desenvolvedor tem suas particularidades ao realizar a etapa de planejamento e também existem diversas metodologias e guias que orientam sobre o planejamento, seja em metodologias ágeis como Scrum e XP ou nas metodologias mais tradicionais como é o caso do PMBOK.
O escopo de nossa aplicação a ser desenvolvido com o Laravel Framework será a seguinte:- Exibir uma lista de links;
- Formulário de envio;
- Validação de formulário;
- Inserção dados no Banco de Dados;
- Gerenciador de dependências: Composer;
Com base em nosso planejamento já temos base para começar um novo projeto.
1. Abra seu terminal de comando e localize o diretório:
cd ~/Sites
2. Para baixar o instalador do Laravel, execute o comando abaixo:
composer global require "laravel/installer"
3. Adicione ao PATH do sistema para que ele possa ser executado em qualquer lugar:
export PATH=”$PATH:$HOME/.composer/vendor/bin"
4. Para criar um novo projeto execute o seguinte comando:
laravel new links
Esse comando criará um novo diretório chamado links e instalará no diretório links um projeto Laravel vazio. 5. Acesse o endereço: localhost:8000. Onde será visualizado a tela de boas vindas padrão do framework;
6. Agora execute o sistema de autenticação do Laravel com o seguinte comando:
php artisan make:auth
O uso do sistema de configuração facilitará o nosso trabalho futuro com as views e com as rotas do Laravel Framework;Criando a Lista de Links
A implementação de uma lista de links pode parecer uma tarefa simples, entretanto envolve: banco de dados, criação de tabelas no banco de dados, listagem dos dados na interface entre outras atividades.
1. Para isso criaremos uma migration por meio do comando artisan do Laravel. Use o comando a baixo:
php artisan make:migration create_links_table --create=links
2. Acesse o arquivo gerado em:
database/migrations{{datatime}}_create_links_table.php
3. Dentro do método Up adicione as novas colunas:Schema::create('links', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('url’)->unique();
$table->text('description');
$table->timestamps();
});
4. Salve o arquivo e execute o comando abaixo:
php artisan migrate
5. Para criar um modelo em Laravel utilizamos o seguinte comando:
php artisan make:model Link
6. Abra o arquivo ModelFactory.php e vamos iniciar um para a tabela de links:$factory->define(App\Link::class, function (Faker\Generator $faker) {
return [
'title' => $faker->name,
'url' => $faker->url,
'description' => $faker->paragraph,
];
});
7. Em seguida, crie um seeder para que possamos inserir dados facilmente:
Rotas e Visões
Para criar uma interface de visão mostrando a lista de links.
1. Abra primeiro o arquivo routes/web.php e você deverá ver a rota padrão abaixo:
Route::get('/', function () {
return view('welcome');
});
$links = \App\Link::all();
return view('welcome', ['links' => $links]);
});
<li>{{ $link->title }}</li>
@endforeach
Enviando os Links
Route::get('/submit', function () {
return view('submit');
});
@section('content')
<div class="container">
<div class="row">
<h1>Submit a link</h1>
<form action="/submit" method="post">
{!! csrf_field() !!}
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" placeholder="Title">
</div>
<div class="form-group">
<label for="url">Url</label>
<input type="text" class="form-control" id="url" name="url" placeholder="URL">
</div>
<div class="form-group">
<label for="description">Description</label>
<textarea class="form-control" id="description" name="description" placeholder="description"></textarea>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
@endsection
$validator = Validator::make($request->all(), [
'title' => 'required|max:255',
'url' => 'required|max:255',
'description' => 'required|max:255',
]);
if ($validator->fails()) {
return back()
->withInput()
->withErrors($validator);
}
$link = new \App\Link;
$link->title = $request->title;
$link->url = $request->url;
$link->description = $request->description;
$link->save();
return redirect('/');
});
7. Em seguida, crie um seeder para que possamos inserir dados facilmente:
php artisan make:seeder LiknsTableSeeder
8. Abra o arquivo LinksTableSeeder.php que acabou de ser criado, e no método Run vamos utilizar a fábrica de modelos que criamos acima:
public function run(){
factory(App\Link::class, 10)->create();
}
9. Abra o arquivo DatabaseSeeder.php e adicione o código abaixo ao método run:
$this->call(LinksTableSeeder::class);
10. Agora você pode executar migrations e seeders para adicionar dados automaticamente a sua tabela:
php artisan migrate --seed
Rotas e Visões
Para criar uma interface de visão mostrando a lista de links.
1. Abra primeiro o arquivo routes/web.php e você deverá ver a rota padrão abaixo:
Route::get('/', function () {
return view('welcome');
});
2. Laravel nos fornece duas opções neste ponto. Podemos adicionar nossas adições de código diretamente ao encerramento de rota, onde a "return view .." é, ou podemos mover o código para um controlador. Para simplificar vamos adicionar o nosso código necessário para buscar o diretório de links no encerramento.
Route::get('/', function () {$links = \App\Link::all();
return view('welcome', ['links' => $links]);
});
3. Em seguida, edite o arquivo welcome.blade.php e adicione um foreach simples para mostrar todos os links:
@foreach ($links as $link) <li>{{ $link->title }}</li>
@endforeach
Se você atualizar seu navegador, você verá a lista de todos os links adicionados. Com isso tudo pronto, vamos passar para enviar links.
Enviando os Links
A próxima característica importante é a capacidade de outros usuários enviarem links para o aplicativo. Isso exigirá três campos: título, URL e uma descrição. Como adicionamos toda a estrutura do núcleo, model factory, migration e model, na última seção, podem colher os benefícios reutilizando todos os itens para esta seção.
1. Crie uma nova rota no arquivo routes/web.phpRoute::get('/submit', function () {
return view('submit');
});
2. Também precisamos desse arquivo de visualização para podermos criá-lo em resources/views/ submit.blade.php e adicionar o seguinte código bootstrap boilerplate:
@extends('layouts.app')@section('content')
<div class="container">
<div class="row">
<h1>Submit a link</h1>
<form action="/submit" method="post">
{!! csrf_field() !!}
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" placeholder="Title">
</div>
<div class="form-group">
<label for="url">Url</label>
<input type="text" class="form-control" id="url" name="url" placeholder="URL">
</div>
<div class="form-group">
<label for="description">Description</label>
<textarea class="form-control" id="description" name="description" placeholder="description"></textarea>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
@endsection
3. Agora, vamos criar uma rota para lidar com os dados POST e fazer a nossa validação. Vamos criar essa rota e adicionar nossas regras de validação em:
Route::post('/submit', function(Request $request) {$validator = Validator::make($request->all(), [
'title' => 'required|max:255',
'url' => 'required|max:255',
'description' => 'required|max:255',
]);
if ($validator->fails()) {
return back()
->withInput()
->withErrors($validator);
}
$link = new \App\Link;
$link->title = $request->title;
$link->url = $request->url;
$link->description = $request->description;
$link->save();
return redirect('/');
});
Esta rota é um pouco mais complexa do que as outras. Primeiro, estamos injetando o Illuminate\Http\Request que irá armazenar todos os dados POST. Em seguida, criamos uma nova instância do Validator com nossas regras. Se esta validação falhar, devolve o utilizador com os dados de entrada originais e com os erros de validação.Finalmente, se tudo foi validado, usamos o modelo "App :: Link" para adicionar os dados.
Comentários
Postar um comentário