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.