Como desenvolver MVC modular para web. Básico com CodeIgniter. (Parte 3/4)

Objetivo – Parte 3

Pallet Town já foi criada. Já sabemos adicionar e remover Treinadores e Pokémons do nosso banco de dados. O problema é: só sabemos fazer isso direto por código.

Nesta etapa nosso objetivo será permitir o usuário navegar pelo sistema e interagir com ele a partir de links, botões e formulários.

Esta é a terceira parte do tutorial. Se deseja ver a primeira, segunda e quarta parte, os links estão logo abaixo:

Nesta parte, vamos aprender a controlar uma requisição de um usuário, criar links e enviar formulários.

 

6. Redirecionando

Quando acessamos a URL da nossa aplicação somos redirecinado para a “default_controller”. No nosso caso, essa controller é a “Welcome” pode ser alterada para outra controller no arquivo “application/config/route.php“.

Mas para este exemplo, vou mostrar como fazer o redirecionamento da homepage de um outro jeito. Considerando que a controller principal é a “Welcome”, vamos adicionar um redirecionamento para que sempre que um usuário acesse essa controller ele seja redirecionado para “app/trainers“.

Então, na controller “application/modules/welcome/controllers/Welcome.php“, vamos adicionar o helper “url” do CodeIgniter e usar duas de seus funções:

 public function index () {
  // Load URL Helpers
  $this->load->helper('url');

  // Create a URL
  $url = base_url() . 'trainers';

  // Redirect user
  redirect($url);
 }

Teste agora acessando a home da sua aplicação.

https://ci-lesson-meu_usuario.c9users.io/ci/

 

7. Renderizando uma View

Aprendemos a fazer um Hello World a partir de output pela controller. Vamos agora deixar nossa aplicação um pouco mais realista e colocar um arquivo de View que será chamado pela nossa controller.

Criando uma variável e passando ela para a view:

public function index ($city = 'Pallet Town') {
 $data = [];
 $data['msg'] = "Hello $city!";

 $this->load->view('trainers/list', $data);
}

Exibindo a variável na view:

<?php $this->load->view('layout/header') ?>

<div class="container">
 <h3>Pokémon Trainers</h3>

 <p><?php echo $msg ?></p>
</div>

<?php $this->load->view('layout/footer') ?>

 

8. Enviando formulários

Precisamos modificar a view e adicionar o formulário. O exemplo abaixo usa a estrutura dos formulários com estilos do Bootstrap. Você pode conferir a documentação dele em:

Adicione o formulário na view:

<?php
$this->load->helper('url');

$this->load->view('layout/header') ?>

<div class="container">
 <h3>Pokémon Trainers</h3>

 <p><?php echo $msg ?></p>

 <form action="<?php echo base_url('trainers/insert') ?>" method="post">
 <div class="form-group">
 <label for="name">Nome</label>
 <input type="text" class="form-control" id="name" name="name" placeholder="Misty">
 </div>
 <div class="form-group">
 <label for="description">Descrição</label>
 <input type="text" class="form-control" id="description" name="description" placeholder="Lider de ginásio.">
 </div>
 <input type="submit" value="Cadastrar" class="btn btn-success" />
 </form>
</div>

<?php $this->load->view('layout/footer') ?>

Agora receba o formulário no método “insert” da controller:

public function insert () {
 // Load database library
 $this->load->database();

 // Load URL helper
 $this->load->helper('url');

 // If has $_POST['name']
 if (isset($_POST['name'])) {
  // Add to database
  $trainer = [];
  $trainer['name'] = $_POST['name'];
  $trainer['description'] = $_POST['description'];
  $trainer['money'] = 0;
  $trainer['discovered_pokemons'] = 0;
  $this->db->insert('trainers', $trainer);

  // Go back to form
  redirect(base_url('trainers'));
 }
 
 else {
  echo 'ERRO! Nenhum formulário foi recebido!';
 }
}

 

Perfeito! 🙂

Agora sim! Sabemos tudo o que precisamos para começar a trabalhar verdadeiramente com MVC!!!


I para a Parte 4