2 Controller - gt-heart/heart GitHub Wiki

Controller

O Controller/base do heart é a camada que fará a intermediação entre as views e as models, e por tanto, se comunica com as 4 principais operações de banco trabalhadas também na Model/base, a saber: criação (create), leitura (read), atualização (update) e exclusão (delete).

Antes de explicar como cada uma das operações é trabalhada na nossa Controller/base, vamos falar sobre as estruturas que guiam o comportamento dessa classe: as propriedades actions, offlineActions, fillneeded, relationals, model, location, a função action e o construtor da Controller/base.

BASICS

Actions

As ações permitidas em uma controller são definidas por dois arrays de string. O array actions e o array offlineActions. Vamos aos detalhes:

actions

É o array que define as ações privadas do sistema para aquele controlador. Em outras palavras, são as ações que precisam de autenticação para serem executadas.

offlineActions

É o array que define as ações públicas do sistema para aquele controlador. Em outras palabras, são as açoes que não precisam de autenticação para serem executadas.

Fillneeded

Esse é o array que trata os campos obrigatórios da tabela referente àquele controlador. Bom, tudo o que você vai colocar com required no HTML e/ou como NOT NULL no MySQL, deveria estar presente no array fillneeded, que vai funcionar como uma camada a mais de segurança. O fillneeded trabalha em conjunto com a função is_valid().

Relationals

Esse é o array que determina quais tabelas estão relacionadas com a tabela referente àquela controller.

Model

Essa propriedade trabalha em conjunto com a função get_model(), que retornará o nome da model com base no nome de uma dada controller.

Location

Determina a página para a qual um usuário deve ser redirecionado após serem executadas ações de Create, Update e Delete.

Action

A função action() é quem lida com as chamadas da nossa controller. Ela interpreta quais são as ações permitidas e as executa quando solicitado, descartando as chamadas para ações inválidas, ou seja, que não estão em actions ou em offlineActions.

O construtor

Nosso é o responsável por atribuir valor à propriedade model e por executar a função action. Por tanto, o caminho mais curto para executar uma ação é fazendo uma nova instância da referida controller.

CRUD

Bom, finalmente, vamos falar sobre o tratamento das 4 operações básicas..

Create e Update

São aplicados através da função store(). A função store irá identificar se deve fazer um Model->insert() ou um Model->update(), baseando-se na presença do campo id no $_REQUEST. Por padrão, após a execução, a store() redireciona o usuário para a location definida na respectiva controller.

Read

Temos duas funções para executar esta ação que trabalham de formas diferentes. São elas:

loadAll($order = null, $where = null)

Executa a função Model::all($order, $where) e retorna seu valor de retorno;

one($id = null)

A função one da nossa controller identifica, caso não receba o $id por parâmetro, que o $id solicitado está no $_GET. Executa a função Model::one($id) e retorna seu valor de retorno, caso haja um $id válido. Do contrário, retorna null.

Delete

A função delete() espera que na $_REQUEST exista um campo de name delete e cujo valor seja o id da linha que se deseja deletar. Ela executa a Model->remove() e, por padrão, redireciona o usuário para a location definida na respectiva controller.