A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Componente 1.5 MVC - Funcionalidade admin II

Qua

23

Jan

2008


22:31

(21 votos, média 4.71 de 5) 


Atualizando o modelo

O modelo, que funciona como um distribuidor de ferramentas de trabalho, precisa ser atualizado para fornecer uma função que possibilite salvar registros. Vamos chamar nosso método de salvar( ). Este método fará três coisas: associar os dados do formulário com o objeto TableOla, checar se o registro foi formado corretamente e armazenar os dados do registro na base de dados.

setId((int)$array[0]); } /** * Método para definir o identificador do olá * * @access public * @param int Identificador olá * @return void */ function setId($id) { // Define id e limpa os dados $this->_id = $id; $this->_dados = null; } /** * Método para obter um olá * @return objeto com dados */ function &getDados() { // Carrega os dados if (empty( $this->_dados )) { $query = 'SELECT * FROM #__ola '. ' WHERE id = '.$this->_id; $this->_db->setQuery( $query ); $this->_dados = $this->_db->loadObject(); } if (!$this->_dados) { $this->_dados = new stdClass(); $this->_dados->id = 0; $this->_dados->mensagem = null; $this->_dados->published = null; } return $this->_dados; }

Adicionar:

/** * Método para armazenar um registro * * @access public * @return boolean True se bem sucedido */ function salvar() { $row =& $this->getTable(); $dados = JRequest::get( 'post' ); // Ligar campos do formulário com a tabela ola if (!$row->bind($dados)) { $this->setError($this->_db->getErrorMsg()); return false; } // Garantir que o registro é válido if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); return false; } // Armazenar a tabela ola na base de dados if (!$row->store()) { $this->setError($this->_db->getErrorMsg()); return false; } return true; } } ?>

A primeira linha obtém uma referência ao objeto tabela. Se usarmos a convenção de nomes não é preciso indicar o nome do objeto tabela - a classe JModel sabe como encontrá-lo. Chamamos nossa classe de TableOla (o modelo sabe que se trata de uma tabela) e a colocamos num arquivo chamado ola.php (se a classe é TableOla o arquivo deve se chamar ola.php) no diretório tables (o diretório das classes de tabela).

A segunda linha obtém os dados do formulário. O JRequest possibilita obter todas as variáveis que foram submetidas através do método 'POST'. Elas chegam até nós na forma de um array associativo.

O restante do código é fácil: ligamos, checamos e armazenamos. O método bind( ) copia os valores do array para as propriedades correspondentes do objeto tabela. Neste caso, ele pega os valores de id, mensagem e published e os copia para o nosso objeto TableOla.

O método check( ) verifica os dados. Na classe JTable, este método apenas retorna true. No atual estágio, este método não está servindo para nada, mas é bom deixá-lo aí. Caso seja preciso fazer alguma verificação futuramente, este método torna possível fazer uma checagem de dados na nossa classe TableOla sobrepondo-o com um método personalizado.

O método store( ) pega os dados do objeto tabela e os armazena na base de dados. Se id for igual a 0 (zero), ele cria um novo registro (INSERT), caso contrário ele atualiza o registro indicado (UPDATE).

Informações adicionais