Eu também prefiro no Model a chamada ao banco de dados.
// model
class Usuario_model extends Model{
function getEstados(){
$this->db->get('estados')->result_array();
}
function getDadosUsuario($id=null){
$this->db->getwhere('usuarios',array('id'=>$id))->result_array();
}
}
// controller
class Usuario_controller extends Controller{
function edit($id){
$data['usuario'] = $this->usuario_model->getDadosUsuario($id);
$data['estados'] = $this->usuario_model->getEstados();
$this->load->view('usuario_edit', $data);
}
}
Aí na view usuario_edit eu tenho o array de estados e os dados do usuario.
Abs
Edinho Almeida
11 8018-8019
2009/2/2 Ricardo Valfreixo <[email protected]>
> Concordo com o Marcus. Essa função deveria estar num model. Que passava o
> array para o controller e por sua vez para a view. Na view só tem de chamar
> o form_dropdown. Acesso a base de dados fora do model é sempre má prática.
>
>
> Vx
>
>
> 2009/2/2 Marcus Cavalcanti <[email protected]>
>
> Bem, se vc do seu helper precisa acessar alguma função que faz acesso a
>> dados, então há alguma coisa de errado.
>>
>> Sugiro que você reveja isso, pois essa solução não é a ideal.
>>
>> Abs
>>
>> 2009/2/2 Vinicius Cruz <[email protected]>
>>
>> Bom, eu desenvolvi um helper proprio de combo, mas somente para tratar a
>>> consulta do banco, retornando um array. O array retornado passo para o view
>>> e chamo a função form_dropdown().
>>>
>>> Posso disponibilizar depois, caso deseje. Só não sei se está perfeito (em
>>> termo de programação), mas me atende tranquilamente.
>>>
>>> Vinicius
>>>
>>>
>>> 2009/2/1 Julio Cesar <[email protected]>
>>>
>>>> Olá, opa é uma ótima dica essa, o único defeito deste dropdown para mim,
>>>> é que eu precisaria, fazer o SELECT do banco de dados de qualquer forma e
>>>> depois jogar em uma array, e fazer isto na view de jeito nenhum né :D
>>>> Então a própria função do helper já faz todo o trabalho, bastando na
>>>> view chamar a função com os parâmetros e pronto :D A questão do: "*fazer
>>>> echo "<select>" ... bla bla bla.*" só se faz necessário no helper ou
>>>> seja, a função é implementada e pronto depois é só chamar * <?php
>>>> combo_cria('tabela','campo');?>* na view e a função se encarrega de
>>>> todo o trabalho.
>>>> Quanto a este helper, até já implementei a questão da array para mostrar
>>>> no combo mais de um campo da tabela, e agora com este dropdown, vi mais uma
>>>> questão interessante de ser implementado que seria de "dizer" qual opção
>>>> deveria vir selecionada :D
>>>> Mas é isso ae, fazendo e aprendendo.... :D
>>>> Vlw
>>>>
>>>>
>>>> 2009/2/2 Beto <[email protected]>
>>>>
>>>> nao sei se ajudaria ainda , mas o helper Form cria os select de form
>>>>> facil, entao vc nao precisaria fazer echo "<select>" ... bla bla bla.
>>>>>
>>>>> na documentacao do helper form procura por:form_dropdown()
>>>>> []'s
>>>>>
>>>>> - - - - - - - - - - - - - - - - - - - - -
>>>>> Luiz Alberto S. Ribeiro [ Beto ]
>>>>> http://beto.euqueroserummacaco.com
>>>>>
>>>>>
>>>>> 2009/2/1 Julio Cesar <[email protected]>
>>>>>
>>>>> Douglas! Perfeito era isso mesmo que eu estava precisando. Deu certo o
>>>>>> helper :D
>>>>>>
>>>>>> Vou compartilhar aqui como que ficou a função:
>>>>>>
>>>>>> * function combo_cria($tcTabela,$tcCampo){
>>>>>>
>>>>>> $ci = & get_instance();
>>>>>>
>>>>>> $rQuery = $ci->db->get($tcTabela);
>>>>>> echo "<select>";
>>>>>> foreach ($rQuery->result() as $row){
>>>>>> echo "<option>". $row->$tcCampo ."</option>";
>>>>>> }
>>>>>> echo "</select>";
>>>>>> }*
>>>>>>
>>>>>> Basta criar o helper no caso o arquivo *combo_helper.php* (Claro
>>>>>> que crie o arquivo decente não só com a função :D)
>>>>>> Depois para carregar o helper chamar assim: *
>>>>>> $this->load->helper('combo');*
>>>>>> E então para usar ele no seu view faça assim: * <?php
>>>>>> combo_cria('tabela','campo');?> *
>>>>>>
>>>>>> Está ae a dica.
>>>>>> Algumas coisas que poderiam ser melhoradas:
>>>>>> 1. Fazer o combo ter uma opção em branco.
>>>>>> 2. No parâmetro tcCampo tornar possível passar uma array para
>>>>>> múltiplos campos....
>>>>>> 3. Criar um parâmetro para uma condição WHERE, algo assim.
>>>>>>
>>>>>> Bem mas essas dicas estão ae só para quem quiser implementar algo mais
>>>>>> prático :D
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2009/2/1 Douglas G. Souza <[email protected]>
>>>>>>
>>>>>> Júlio,
>>>>>>>
>>>>>>> Você pode usar da seguinte maneira:
>>>>>>>
>>>>>>> $ci = & get_instance();
>>>>>>> $ci->db->get('tabela');
>>>>>>>
>>>>>>> E isso pode ser usado para qualquer outra classe dentro da instância
>>>>>>> do CI.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Julio Cesar escreveu:
>>>>>>>
>>>>>>> Olá, pessoal, estou fazendo um helper que cria um combo dos registros
>>>>>>> de uma tabela, só que estou como um problemão.
>>>>>>> Pois como que uso a classe db em um helper?
>>>>>>> Porque eu não posso usar assim: $this->db->get('tabela'); Porque
>>>>>>> na verdade o $this aqui não existe. Então a pergunta
>>>>>>> seria, como que eu posso usar as classes do CI como a db em um
>>>>>>> Helper? Dei uma olhada nos outros helpers, nenhum usa classe db
>>>>>>> Como poderia fazer?
>>>>>>>
>>>>>>> Obrigado pela atenção.
>>>>>>>
>>>>>>> ------------------------------
>>>>>>> _______________________________________________
>>>>>>> Lista mailing
>>>>>>> [email protected]http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Lista mailing list
>>>>>>> [email protected]
>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Lista mailing list
>>>>>> [email protected]
>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Lista mailing list
>>>>> [email protected]
>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Lista mailing list
>>>> [email protected]
>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Lista mailing list
>>> [email protected]
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>>
>>
>>
>> --
>> Marcus Cavalcanti
>> 21 9144-5068
>> www.marcuscavalcanti.net/blog
>>
>> _______________________________________________
>> Lista mailing list
>> [email protected]
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br