Ir para conteúdo

POWERED BY:

Arquivado

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

Paulodemoc

JavaScript com PHP

Recommended Posts

Olá pessoal, gostaria de pedir-lhes uma sugestão. Eu estou desenvolvendo uma aplicação PHP, mas que possui muito javascript.

E eu uso sistema de regionalização pra traduzí-lo pra francês, português, inglês e qlqr idioma a mais.

 

Mas eu tenho um problema, que devido ao PHP passar certas informações pro JS, eu acabo tendo que deixar muito código na visão.

Algumas coisas eu posso resolver apenas definindo variaveis globais (por exemplo: window.baseurl = "<?php.....?>";

 

Mas o problema é que mexo com objetos tb, e os rótulos não podem ser variáveis, tem que ser sempre uma string....

 

Eu não posso fazer:

 

var labels['save'] = 'salvar';

...
buttons:{
    labels['save']:function(){...}
},....

 

O JS não aceita... Se eu por apenas

 

 

var label = 'salvar';

...
buttons:{
    label:function(){...}
},....

 

o rotulo fica 'label' mesmo, ele não resolve pro conteúdo da variável...

 

Então por isso eu acabo tendo que deixar o js na visão, pq aí eu faço:

 

 

...
buttons:{
    "<?php echo lang('save'); ?>":function(){...}
},....

 

Mas aí as visões acabam ficando carregadas demais de código... vocês tem alguma alterantiva a me oferecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se você utilizar um arquivo PHP que retorna o conteúdo do arquivo JS? :mellow: Mais ou menos assim:

<script type="text/javascript" src="meu-arquivo.js.php"></script>
Observe que no src você utilizaria um arquivo PHP (coloquei um ".js" no nome apenas para "enfeitar" B) ), e dessa forma, o conteúdo gerado por este arquivo PHP já seria o código completo do seu arquivo JS, com conteúdo das variáveis em seus devidos lugares, além de você poder incluir uma série de validações, prevenir acesso direto ao arquivo, etc.

 

Com isso, o conteúdo do arquivo JS será sempre dinâmico...

 

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se você utilizar um arquivo PHP que retorna o conteúdo do arquivo JS? :mellow: Mais ou menos assim:

<script type="text/javascript" src="meu-arquivo.js.php"></script>
Observe que no src você utilizaria um arquivo PHP (coloquei um ".js" no nome apenas para "enfeitar" B) ), e dessa forma, o conteúdo gerado por este arquivo PHP já seria o código completo do seu arquivo JS, com conteúdo das variáveis em seus devidos lugares, além de você poder incluir uma série de validações, prevenir acesso direto ao arquivo, etc.

 

Com isso, o conteúdo do arquivo JS será sempre dinâmico...

 

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Eu pensei em fazer justamente algo do tipo, mas aí eu teria que usar uma nova função no controlador, uma vez que eu uso codeigniter, pra eu poder continuar usando a classe de regionalização.

Mas aí eu teria que ficar dando echo no código js....

Ou o controlador do codeigniter permite fechamento do php e inserção de ''html/js'' no meio da função? Saberia me dizer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei dizer, não... http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif Nunca utilizei o CodeIgniter... Talvez alguém que utilize possa lhe ajudar, ou procure nos fóruns do framework ou até mesmo na documentação...

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... pode explicar qual é o problema de novo ?

 

pq até entendi a solução que você tá tentando usar, mas o problema não ficou claro..

veja.. você não precisa traduzir 'o código fonte' !!

 

pow.. se o site é multi-lingua... o código fonte não precisa saber disso..

e nem faz sentido gerar código fonte js em tempo de execução, só pq o site é poliglota.

 

você não precisa informar para o código js, oque é visivel para o usuario..

por exemplo, o atributo name dos inputs não é visivel para o usuario, então você pode usar ele seja em qualquer lingua que o site estiver no momento..

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... pode explicar qual é o problema de novo ?

 

pq até entendi a solução que você tá tentando usar, mas o problema não ficou claro..

veja.. você não precisa traduzir 'o código fonte' !!

 

pow.. se o site é multi-lingua... o código fonte não precisa saber disso..

e nem faz sentido gerar código fonte js em tempo de execução, só pq o site é poliglota.

 

você não precisa informar para o código js, oque é visivel para o usuario..

por exemplo, o atributo name dos inputs não é visivel para o usuario, então você pode usar ele seja em qualquer lingua que o site estiver no momento..

 

Claramente você não entendeu o problema. Eu me referi aos labels de objects.

Um objeto em JS é coposto da seguinte forma:

 

{nome_da_propriedade:valor,nome_da......}

 

Existem alguns plugins que eu utilizo, que utiliza o nome da propriedade para exibir algo.

Por exemplo:

 

buttons:{
Salvar:function(){....},
Excluir:function(){...}
}

gera dois botões com o texto Salvar e Excluir... infelizmente, ali só aceita strings (com ou sem aspas, ele exibe o mesmo valor... "Salvar" é o mesmo que Salvar...)

Então eu não posso usar uma variavel contendo um valor do texto, pois se eu criar uma variável chamada botao1 = "Salvar", e colocar botao1 no lugar de Salvar, ele vai gerar um botão com o texto "botao1".

Por isso eu tenho que colocar o js na visão gerada pelo php, pq aí eu faço:

 

 

buttons:{
<?php echo lang('save'); ?>:function(){....},
<?php echo lang('remove'); ?>:function(){...}
}

Aí ele gera o JS com o valor correto pra cada linguagem. Se eu fosse colocar isso dentro de uma função no controlador, eu teria que ficar fazendo:

 

echo "buttons:{".lang('save').":function(){....}";

 

e teria que ficar "escapando" todas as aspas que aparececem no JS...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos por partes, para ver se chegamos em algum lugar

gera dois botões com o texto Salvar e Excluir... infelizmente, ali só aceita strings (com ou sem aspas, ele exibe o mesmo valor... "Salvar" é o mesmo que Salvar...)

Então eu não posso usar uma variavel contendo um valor do texto, pois se eu criar uma variável chamada botao1 = "Salvar", e colocar botao1 no lugar de Salvar, ele vai gerar um botão com o texto "botao1".

ele quem gera os botões pra você? o CodeIgniter ?

ou outra função js tua ?

 

e teria que ficar "escapando" todas as aspas que aparececem no JS...

 

não é 'bem assim', pois existe o heredoc

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

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.