Eu tenho um helper
request_helper.php
<?php
function is_ajax()
{
return (
isset($_SERVER['HTTP_X_REQUESTED_WITH'])
AND
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
);
}
aí uso assim:
function cidades() {
$dados = $this->modelo->carrega();
$pagina = $this->load->view('divHTML', $dados, true);
if(is_ajax()){
echo $pagina;
}else{
return $pagina;
}
}
Abs
Edinho Almeida
11 8018-8019
2008/12/16 Eric Saboia (Fortes Informatica) <[email protected]>:
> Opa, estamos quase lá... só um detalhe:
> Quando eu for chamar minha função na action que carrega a página inteira,
> ela deve retornar a view, já no AJAX, ele deve dar um "echo" para que o
> conteúdo seja impresso.
>
> Exemplo:
>
> class Cliente extends Controller {
> function exibe() {
> $div['dados'] = Cliente::cidades();
> $this->load->view('divHTML', $div);
> }
>
> function cidades() {
> $dados = $this->modelo->carrega();
> $pagina = $this->load->view('divHTML', $dados, true);
> return $pagina;
> }
> }
>
> Já no ajax, quando eu fosse chamar minha página localhost/cliente/cidades,
> ele deve já retornar o HTML imprimido pra eu jogar na div.
>
> No caso eu teria que fazer um tratamento parecido com o do método view (pra
> decidir se deve retornar ou imprimir o resultado), correto? Ou eu posso
> criar um terceiro método apenas para imprimir o retorno do cidades();
>
> De qualquer jeito creio que já dá pra resolver. Obrigado pela ajuda,
> Vinicius e Andrey.
>
> ----- Original Message -----
> From: Vinicius Cruz
> To: CodeIgniter Brasil
> Sent: Tuesday, December 16, 2008 2:18 PM
> Subject: Re: [CodeIgniter] Executando controllers a partir de uma view
> Isso. É como se você criasse um view pra intermediar o processo.
>
> 2008/12/16 Andrey Wischneski <[email protected]>
>>
>> Bom, aí você pode montar a view dentro de uma variável e jogá-la dentro da
>> div, por exemplo:
>>
>> $pagina = $this->load->view('divHTML', $data, true);
>>
>> Onde $data são os dados que você envia para montar o código HTML para
>> inserir na div.
>>
>> $ajax->Assign("DIV","innerHTML", $pagina);
>>
>>
>>
>>
>> 2008/12/16 Eric Saboia (Fortes Informatica)
>> <[email protected]>
>>>
>>> Mas ai na própria função eu já vou ter que inserir todo o código HTML que
>>> deve retornar pra DIV? eu tinha feito uma action e uma view, a action
>>> renderizava a view e aplicava os dados vindos do banco. Nesse caso eu teria
>>> que aplicar todo o HTML direto na action?
>>>
>>> ----- Original Message -----
>>> From: Andrey Wischneski
>>> To: CodeIgniter Brasil
>>> Sent: Tuesday, December 16, 2008 9:19 AM
>>> Subject: Re: [CodeIgniter] Executando controllers a partir de uma view
>>> Então, amigo, você pode chamar normalmente uma função na inicialização do
>>> seu controle...
>>>
>>> exemplo:
>>>
>>> function popula_div() //função ajax, que vai utilizar a mesma biblioteca
>>> para retornar dados para popular a div...
>>> {
>>> $conteudo = $this->library->funcao();
>>> div.innerhtml = $conteudo;
>>> }
>>>
>>> function index() //Função de inicialização do controle
>>> {
>>> $data['conteudo'] = $this->library->funcao(); //Dentro de uma
>>> biblioteca, chama uma função que retornará dados para popular a div,
>>> passando a variável $data['conteudo'] para a view.
>>> $this->load->view('view',$data);
>>> }
>>>
>>>
>>> Obs: o exemplo ficou meio porquinho, mas acho que da pra entender...
>>>
>>> Não sei se entendi exatamente o que você precisa, mas tenho certeza que
>>> utilizando o codeigniter é possível fazer...
>>>
>>>
>>>
>>>
>>> 2008/12/16 Eric Saboia (Fortes Informatica)
>>> <[email protected]>
>>>>
>>>> O problema não é utilizar ajax, o problema é que quando carrego
>>>> determinada página, uma div já deve vir preenchida com um conteúdo que será
>>>> repopulado via ajax após uma determinada ação. Ou seja, ao carregar
>>>> determinada página, eu preciso "incluir" uma action. Após alguma ação, essa
>>>> mesma action será chamada via ajax. Deu pra entender?
>>>>
>>>> Descrição do método no ZF:
>>>> 53.4.1.1. Action View Helper
>>>>
>>>> The Action view helper enables view scripts to dispatch a given
>>>> controller action; the result of the response object following the dispatch
>>>> is then returned. These can be used when a particular action could generate
>>>> re-usable content or "widget-ized" content.
>>>>
>>>> Actions that result in a _forward() or redirect are considered invalid,
>>>> and will return an empty string.
>>>>
>>>> The API for the Action view helper follows that of most MVC components
>>>> that invoke controller actions: action($action, $controller, $module =
>>>> null,
>>>> array $params = array()). $action and $controller are required; if no
>>>> module
>>>> is specified, the default module is assumed.
>>>>
>>>> ----- Original Message -----
>>>> From: Vinicius Cruz
>>>> To: CodeIgniter Brasil
>>>> Sent: Monday, December 15, 2008 9:22 PM
>>>> Subject: Re: [CodeIgniter] Executando controllers a partir de uma view
>>>> Bom, não entendi muito bem o que estás precisando fazer, mas quando uso
>>>> ajax, por meio do jquery, chamo o endereco de um método do controller
>>>> normalmente....
>>>>
>>>>
>>>> 2008/12/15 Eric Saboia (Fortes Informatica)
>>>> <[email protected]>
>>>>>
>>>>> Olá, pra quem conhece o ZF, tenho o método action, que pode ser usado
>>>>> desta forma:
>>>>> $this->action('controller', 'action', 'parametros');
>>>>>
>>>>> É uma espécie de include, que chama um controller/action e é possível
>>>>> passar parâmetros.
>>>>>
>>>>> Pra que isso? tenho em minha view uma div que recarrega via ajax ao
>>>>> submeter certo formulário, mas quando carrego a view, essa div já deve vir
>>>>> preenchida com o devido conteúdo, pra isso eu precisaria invocar uma
>>>>> action
>>>>> do mesmo controller que renderizou a view.
>>>>>
>>>>> Deu pra entender? tem algo assim no CI que possa me ajudar ou terei que
>>>>> gambiarrizar? ;D
>>>>> Obrigado!
>>>>> Eric Saboia
>>>>> Desenvolvimento Web
>>>>> Fortes Informática (Fortaleza)
>>>>> Fone: (85) 4005-1111
>>>>> [email protected]
>>>>> www.grupofortes.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
>>>
>>
>>
>> _______________________________________________
>> 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