Auto Load dos models

Zend_Db, Zend_Db_Table, Zend_Db_Xml

Moderador: diegotremper

Auto Load dos models

Mensagempor falkory » Dom Jul 26, 2009 10:17 am

Bom dia pessoal,

Estou iniciando em Zend Framework e estou com uma dúvida, não estou conseguindo fazer com que minhas classes 'models' sejam encontratadas automágicamente pela Zend Framework, adicionei esta linha no meu código:

Código: Selecionar tudo
$front->addModuleDirectory('../admin/models/');


Porém mesmo assim ele continua não encontrando minhas classes, temporáriamente estou incluindo uma a uma no código, mas acho que deve ter uma maneira melhor de se fazer isto.

desde já, agradeço vossa atenção.
falkory
Leitor
 
Mensagens: 1
Data de registro: Sex Jul 10, 2009 3:23 pm

Re: Auto Load dos models

Mensagempor diegotremper » Sex Jul 31, 2009 7:56 am

Olá,

para a seguinte estrutura de diretórios:

Código: Selecionar tudo
caminho/para/algum/diretorio/
    models/
        User.php <<-- Classe My_User


seria:

Código: Selecionar tudo
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => 'caminho/para/algum/diretorio/',
    'namespace' => 'My',
));

$autoloader->pushAutoloader($resourceLoader);


referencia: http://framework.zend.com/manual/en/zen ... ource.html

[]s
Avatar de usuário
diegotremper
Administrador
 
Mensagens: 126
Data de registro: Qua Jan 02, 2008 10:08 pm
Localização: Porto Alegre - RS

Re: Auto Load dos models

Mensagempor opistola » Qui Ago 13, 2009 3:36 pm

Boas,

Tambem estou a ter o mesmo problema... infelizmente tanto a documentação da Zend como aqui nesta resposta não dizem o sito aonde colocar o código sugerido. Será no bootstrap?? Dentro da classe bootstrap? init? Agradecia alguma ajuda.

Cumprimentos,

Sérgio Pinto
Sergio P.
Web Developer
Avatar de usuário
opistola
Membro
 
Mensagens: 24
Data de registro: Qui Ago 13, 2009 11:43 am
Localização: Aveiro - Portugal

Re: Auto Load dos models

Mensagempor danieldeveloper » Seg Ago 17, 2009 11:51 am

Olá,

se você estiver usando o zend 1.9.1, como eu...

Deve-se inserir o includePath do mode na sua application.ini:

assim, por exemplo:

Código: Selecionar tudo
includePaths.models= APPLICATION_PATH "/models"


Automáticamente os seus models serão carregados... se eles tiverem dentro de "application/models/"...

OBS: No bootstrap, também deve-se estar chamando o autoloader da zend

Código: Selecionar tudo
$autoloader = Zend_Loader_Autoloader::getInstance();


abs
danieldeveloper.com
danieldeveloper
Participante
 
Mensagens: 73
Data de registro: Sex Mai 08, 2009 11:31 am

Re: Auto Load dos models

Mensagempor opistola » Ter Ago 18, 2009 9:37 am

Olá,

Desde já agradeço a resposta,

Mesmo executando como descreveste aqui nao consigo instanciar uma class que se encontra dentro da tabela models.

Terá que se fazer mais alguma coisa no controlador??

Engraçado é que consigo com facilidade instanciar essa mesma class se ela estiver contida dentro da pasta library, renomeando a mesma class para um namespace registado.

Se tentar instanciar esta class "Models_userstable" contida na pasta models na pasta library diz que nao consegue encontrar essa mesma class.

Alguma sugestão

ps: tb estou a utilizar a o zend 1.9
Sergio P.
Web Developer
Avatar de usuário
opistola
Membro
 
Mensagens: 24
Data de registro: Qui Ago 13, 2009 11:43 am
Localização: Aveiro - Portugal

Re: Auto Load dos models

Mensagempor danieldeveloper » Qua Ago 19, 2009 9:18 am

Coloca aí o modelo da estrutura da sua aplicação, e me mostre qua model está tentando instanciar!

Abs
danieldeveloper.com
danieldeveloper
Participante
 
Mensagens: 73
Data de registro: Sex Mai 08, 2009 11:31 am

Re: Auto Load dos models

Mensagempor opistola » Qua Ago 19, 2009 12:27 pm

Boas,

O modelo da minha aplicação é:

application
    layouts
    controllers
      indexController.php----(aqui tento instanciar como new models_UsersTable(nao funciona) ou ainda new Band_UserService(funciona))
    models
      UsersTable.php-----class models_UsersTable
    configs
    modules
    views
Library
    Zend
    band
      UserService.php-----class band_UserService (aqui tento instanciar new models_UsersTable(não funciona))

Se colocar UsersTable.php na library-Band e chamar a class de band_UsersTable já consigo instancia-la no controller index como new band_UsersTable


Espero ter sido o mais preciso possivel,

Desde já agradeço a tua persistência em tentar resolver o meu problema.
Sergio P.
Web Developer
Avatar de usuário
opistola
Membro
 
Mensagens: 24
Data de registro: Qui Ago 13, 2009 11:43 am
Localização: Aveiro - Portugal

Re: Auto Load dos models

Mensagempor danieldeveloper » Qui Ago 20, 2009 9:21 am

Ow brother,

vamos por partes.

Se vc está utilizando o zend 1.9, tenta colocar o nome da classe do seu model assim:
Código: Selecionar tudo
class Model_UsersTable extends Zend_Db_Table_Abstract


E no seu controller chama assim:
Código: Selecionar tudo
$users  = new Model_UserdTable();


Tenta dessa forma, senão ajudar, eu tenho uma idéia para uma mehor estrutura pra sua aplicação, e posso te ajudar!

Abs!
danieldeveloper.com
danieldeveloper
Participante
 
Mensagens: 73
Data de registro: Sex Mai 08, 2009 11:31 am

Re: Auto Load dos models

Mensagempor opistola » Qui Ago 20, 2009 2:19 pm

Boa tarde,

Não deu.... podes entao sugerir uma forma melhor para resolver o meu problema???


Cumprimentos
Sergio P.
Web Developer
Avatar de usuário
opistola
Membro
 
Mensagens: 24
Data de registro: Qui Ago 13, 2009 11:43 am
Localização: Aveiro - Portugal

Re: Auto Load dos models

Mensagempor danieldeveloper » Qui Ago 20, 2009 2:28 pm

Ok amigo, como vai ser a sua apicação?
O que vc está querendo desenvolver?
Vai ter necessidade de se criar "Módulos"? tipo: admin, default...

Conte aí!

Abs
danieldeveloper.com
danieldeveloper
Participante
 
Mensagens: 73
Data de registro: Sex Mai 08, 2009 11:31 am

Próximo

Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 0 visitantes