Yii Framework Forum: Diálogo em JS dinâmico - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Diálogo em JS dinâmico Rate Topic: -----

#1 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 07 January 2010 - 02:10 PM

Galera, alguem está usando algum plugin/função/extensão/whatever pra diálogo nos seus projetos?

To tendo que fazer uma parada aqui, e necessito renderizar um diálogo por ajax respondendo ao click de um link. Tentei usar a extensão JUI, mas a extensão da forma que está, não é possível usar o diálogo muito bem (Só da pra usar o diálogo quando se recarrega a página). 

alguem já usou diálogos desta forma?





Every solution creates a problem.
twitter.com/nenhumnick
0

#2 User is offline   ricardograna 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 376
  • Joined: 31-March 09
  • Location:Manaus/AM - Brazil

Posted 08 January 2010 - 08:10 AM

Eu uso somente o Flash Messages do Yii.


Da forma como vc está querendo fazer, eu tenho uma sugestão:

<?php echo CHtml::ajaxButton('TextoDoMeuBotao',array("acaoQueVaiGerarOTexto"), array(
            'type'=>'GET',
            'data'=>array('seuParametro'=>'js:$("#algumInputDaVida").val()'), // passando valores pra chamada
            'success'=>'meuDialogo', // indique uma funcao javascript
    )); ?>

//sua funcao javascript
function meuDialogo(retorno){
    if (retorno== null){
        return;
    }
    alert(retorno);
}

Yes, It Is!
0

#3 User is offline   ricardograna 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 376
  • Joined: 31-March 09
  • Location:Manaus/AM - Brazil

Posted 15 January 2010 - 07:01 AM

Tem o ajaxLink também!

Voce pode combinar a chamada ajax com um Plugin do jQuery para dialogo: Impromptu ou jDialog
Yes, It Is!
0

#4 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 15 January 2010 - 10:36 AM

Não dá .. quando vc usa o renderPartial, o CClientScript não renderiza. Então o renderPartial só traz o html do widget. Eu até arrumei uma solução pra isso. Seria renderizar o CClientScript manualmente na minha action, mas neste momento ele traz tudo, incluindo as tags de todos os .js, pra inclusão na página. Nomrmalmnte o navegador requisita novamente os arquivos no servidor, e ai gera mais trafego do que eu queria gerar, pq a cada requisição ajax renderizada com renderPartial, ele me traz de novo o .js do core do JQuery por exemplo.

O CClientScript tem a opção d renderizar apenas os scripts da página. Mas ai, se faltou algum .js no cliente, vc fica sem.. Acabou me deixando em um grande dilema.





Every solution creates a problem.
twitter.com/nenhumnick
0

#5 User is offline   ricardograna 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 376
  • Joined: 31-March 09
  • Location:Manaus/AM - Brazil

Posted 18 January 2010 - 06:45 AM

Para renderizar os scripts com renderPartial:

$this->renderPartial('url', array('params' => $params), false, true);


Essa vai de graça, hein? rsrsrs :lol:
Yes, It Is!
0

#6 User is offline   Armando 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 80
  • Joined: 11-November 08
  • Location:Brazil - Rio de Janeiro

Posted 18 January 2010 - 11:48 AM

Daniel,

Na view "main" e no início da tag <BODY> eu adicionei a segunte linha:
<?php $this->widget('application.extensions.jui.EJqueryUiInclude', array('theme'=>'redmond'));?>

Como você pode ver, estou usando a extensão "JUI" com tema "redmond".

Edite uma view qualquer, copie e cole o código abaixo no início da página editada, somente pare teste.
<script type="text/javascript">
    $(document).ready(function() {
        // Parametros de visualizacao do painel dialog
        $("#divDialog").dialog({
            bgiframe:true,
            autoOpen:false,
            width:260,
            height:160,
            modal:true
        });
        
        // Ver dialogo
        $('#DialogButton').click(function(){
            $("#divDialog").dialog('open');
        });
        
    });
</script>

<div id='divDialog' title="Título">
    <b>Nome:</b><br/><?php echo 'Armando Ricardo' ?><br/><br/>
    <b>Cidade:</b><br/><?php echo 'Rio de Janeiro'; ?>
</div>
    
<a href='#' id='DialogButton'>Ver diálogo</a>

Feito isso, clique no link "Ver diálogo" e vê se é isso que você precisa.

Se der certo, e se for isso, organize os códigos da sua maneira, pois tive que juntar tudo num só lugar, para mostrar aqui no forum.
0

#7 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 18 January 2010 - 02:29 PM

View Postricardograna, on 18 January 2010 - 06:45 AM, said:

Para renderizar os scripts com renderPartial:

$this->renderPartial('url', array('params' => $params), false, true);


Essa vai de graça, hein? rsrsrs :lol:


Ta quase. O resultado que eu tive foi o mesmo renderizando o CClientScript manualmente, só que passando por parâmetro no renderPartial é bem mais prático, alem de economizar 2 linhas pra renderização do CClientScript. 

Mas ainda tem o problema que os .js são reenviados pro cliente. Quando uso o renderPartial ele gera todas as tags "<scripts>" na renderização carregando os .js no cliente, e o navegador nada inteligente faz todas as requisições novamente. (E estes arquivos repetidos só fazem consumir banda e memória do navegador)

Por enquanto vai ficar assim mesmo. No framework não achei nada qu pudesse me ajudar a fazer carregamento dinâmico dos .js incluidos. Mas vou acabar fazendo depois uma lib aqui pra carregar os .js em requisições ajax. 


Every solution creates a problem.
twitter.com/nenhumnick
0

#8 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 18 January 2010 - 02:38 PM

View PostArmando, on 18 January 2010 - 11:48 AM, said:

Daniel,

Na view "main" e no início da tag <BODY> eu adicionei a segunte linha:
<?php $this->widget('application.extensions.jui.EJqueryUiInclude', array('theme'=>'redmond'));?>

Como você pode ver, estou usando a extensão "JUI" com tema "redmond".

Edite uma view qualquer, copie e cole o código abaixo no início da página editada, somente pare teste.
<script type="text/javascript">
    $(document).ready(function() {
        // Parametros de visualizacao do painel dialog
        $("#divDialog").dialog({
            bgiframe:true,
            autoOpen:false,
            width:260,
            height:160,
            modal:true
        });
        
        // Ver dialogo
        $('#DialogButton').click(function(){
            $("#divDialog").dialog('open');
        });
        
    });
</script>

<div id='divDialog' title="Título">
    <b>Nome:</b><br/><?php echo 'Armando Ricardo' ?><br/><br/>
    <b>Cidade:</b><br/><?php echo 'Rio de Janeiro'; ?>
</div>
    
<a href='#' id='DialogButton'>Ver diálogo</a>

Feito isso, clique no link "Ver diálogo" e vê se é isso que você precisa.

Se der certo, e se for isso, organize os códigos da sua maneira, pois tive que juntar tudo num só lugar, para mostrar aqui no forum.


Eu entendi a sua idéia, mas é um pouquinho diferente do que eu preciso. No cliente não tem diálogo. O Cliente apenas faz uma requisição para o servidor, que pode ser um dialogo(Pode redirecionar a página, pode pedir login, pode várias coisas). As informações do diálogo poem ser diferentes para cada registro que ele esteja selecionado(selecionado num JQGrid), e isso depende e inúmeros fatores. Eu até poderia carregar o conteudo do dialogo com $.ajax( ... ) do JQuery, mas eu gostaria de escrever o mínimo de JS possível (Não pq não goste, mas JS é mais trabalhoso pra manutenção).
Every solution creates a problem.
twitter.com/nenhumnick
0

#9 User is offline   prchakal 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 92
  • Joined: 20-January 10

Posted 31 January 2010 - 03:08 PM

Eu estou com o mesmo problema.

Preciso realziar uma chamada via Ajax com jQuery sendo que com o renderPartial os script .js vem junto na resposta do servidor, pois no controller estou usando o comando:

Yii::app()->clientScript->registerCoreScript('jquery');

E o jquery.js vem em todas as requisições ajax com o renderPartial, e então eu pergunto, o que fazer para que isso não ocorra?

Eu quero como resultado da chamada ajax somente o que está na view.
0

#10 User is offline   prchakal 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 92
  • Joined: 20-January 10

Posted 31 January 2010 - 11:29 PM

Olá,


Eu resolvi o meu problema da seguinte maneira:

$this->renderPartial('_listarFotos', array('model' => $model), false, false);

ao invés de:

$this->renderPartial('_listarFotos', array('model' => $model), false, true);
0

#11 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 01 February 2010 - 09:24 AM

if (Yii::app()->request->isAjaxRequest)

  // renderiza sem registrar o core

else

 // renderiza o core




Every solution creates a problem.
twitter.com/nenhumnick
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users