Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Bento

[Resolvido] Estrutura do site, criando models

Recommended Posts

Olá,

 

Entendo que uma boa estrutura se faz com um controlador simples delegando o trabalho mais para os Models.

 

Eu comecei com o quickstart do site do ZF onde só tem um controlador e um model, o model parece ser uma classe especifica para trabalhar com determinada tabela do banco de dados. É assim que vcs trabalham? um model para cada tabela ou vcs um model para cada aplicação/controller? Quando criar os models?

 

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pedro,

 

A melhor pratica seria separar um modelo por tabela, seu codigo fica mais organizado, mas isso nao te restringe de consultar tabelas diferentes em um mesmo modelo.

 

a variavel $_name que se define no topo do seu modelo, é usada para quando você utiliza o constructor. Mas você pode manualmente criar suas queries, sem o uso do constructor.

 

um exemplo como definir sua query manualmente seria mais ou menos assim.

 

<?php class Model_MyModel extends Zend_Db_Table_Abstract
{  
protected $_name = 'tabela1'; 
//essa função não utiliza a variável $_name para a query, pois estamos definindo uma query manual e não utilizando fetchAll ou qualquer outro método.
public function listarCategorias()
{
$sql = 'SELECT * FROM tabela2';
$result = $this->_db->query($sql);
return $result;
}

//essa função passara a variavel $_name para fetchAll();
public function listarUsuarios()
{
$result = $this->fetchAll();
return $result;
}
}
?>

qualquer dúvida posta ae flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Entendo que uma boa estrutura se faz com um controlador simples delegando o trabalho mais para os Models.

 

Eu comecei com o quickstart do site do ZF onde só tem um controlador e um model, o model parece ser uma classe especifica para trabalhar com determinada tabela do banco de dados. É assim que vcs trabalham? um model para cada tabela ou vcs um model para cada aplicação/controller? Quando criar os models?

 

Obrigado,

 

Isso mesmo Pedro, o model é uma classe de abstração de dados para trabalhar com uma determinada tabela do banco da dados. Ou seja, para cada tabela é interessante a criação de um model para ela.

 

Dentro da models/ ficarão todos seus models referentes as tabelas, por exemplo: se você tem uma tabela chamada users, criará um model chamado Users.php e dentro desse arquivo você extenderá a classe para Zend_Db_Table_Abstract class Default_Model_Users extends Zend_Db_Table_Abstract.

 

É interessante se fazer assim, pois em cada model você definirá o nome da tabela referente, a chave primária da tabela, as tabelas dependentes e referenciará cada chave primária e estrangeira para que possa comunicar ao Zend sobre os relacionamentos entre suas tabelas.

 

É isso, se tiver mais dúvidas, fique a vontade!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma pergunta:

 

No caso estou fazendo a parte de administração, que são umas 50 telas, projeto meio complexo. O controller admin já está ficando com umas 400 linhas, apesar de serem dezenas de funções pequenas, até acabar vai estar enorme. É assim? um controller só para a aplicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma pergunta:

 

No caso estou fazendo a parte de administração, que são umas 50 telas, projeto meio complexo. O controller admin já está ficando com umas 400 linhas, apesar de serem dezenas de funções pequenas, até acabar vai estar enorme. É assim? um controller só para a aplicação?

 

Pedro, pode ser feito sim um controller só para a aplicação, mas não é recomendado, ainda mais em seu projeto que é grande e complexo, vai te prejudicar na hora de uma manutenção ou atualização!

 

Nesse link você pode se informar melhor sobre como organizar isso.

 

http://www.danieldeveloper.com/2009/12/22/estruturando-uma-aplicacao-completa-usando-zend-framework/

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado mais uma vez, irei utilizar um controlador por seção, ou menu do site. e uma pasta na view para cada

 

link para mudar de controlador:

<a href="<?php echo $this->url(
    array(
        'controller' => 'comercial',
        'action'     => 'index'
    ), 
    'default', 
    true) ?>">Link</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite a todos, eu sou novo no Zend e eu estou com uma duvida, eu crie um model e tentei chamar ele dentro de um modeles e esta dando erro

Fatal error: Class 'Empresa' not found in D:\projetosWeb\sisdeve\application\modules\default\controllers\IndexController.php on line 13

 

Minha estrutura esta assim

library/

site/

application/

config...

controlleres/

Index...

Erro...

layout...

models

?

modules/

admin/

default/

Controllers/

Index...

{

<?php

 

class IndexController extends Zend_Controller_Action

{

 

public function init()

{

/* Initialize action controller here */

}

 

public function indexAction()

{

$empresa = new Empresa();

 

}

 

 

})

Models/

Empresa.php meu modulo

{<?php

 

class Model_Empresa extends Zend_Db_Table_Abstract{

protected $_name = 'empresa';

}}

public/

test

 

e Quando eu tento usar esse modulo esta dando esse erro

D:\projetosWeb\sisdeve\application\modules\default\controllers\IndexController.php on line 13

 

eu estou usando o Zend 1.10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Axo interessante criar um "modelo para os modelos", ou seja, um classe com os principais métodos (inserir, editar, excluir, retornar) de uma maneira genéria que deriva da Zend_Db_Table. Os demais modelos, das tabelas da aplicação em si, derivam desse modelo que criei ... axo que fica bem legal e organizado, além de reaproveitar bastante os códigos é claro.

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Juliana

 

Não vejo necessidade de fazer isto, já que isto é feito por qualquer classe que estende Zend_Db_Table_Abstract. Você só define a função se quiser.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.