Ruta relativa de img en Jquery

1,404 views
Skip to first unread message

pablo

unread,
Mar 26, 2009, 6:47:51 AM3/26/09
to CakePHP en Español
Hola,

Estoy creando un pequeño código con jquery que me permite cargar una
nueva imagen en un lugar determinado pulsando sobre su thumbnail. Mi
problema es que dentro del código javascript debo incluir la dirección
a la imagenes de manera manual y al cambiar de servidor tengo que
volver a cambiar el código.

Quisiera saber cómo puedo obtener la ruta relativa de la misma forma
que el helper html->image.

Código javascript:
$("#image img").replaceWith('<img src="/DEMO/img/products/images/'+id
+'.jpg" alt="" />');

Al cambiar de servidor la dirección deja de funcionar ya que no es
DEMO, si no otra. El helper html->image automáticamente crea la ruta
correcta. Cómo puedo obtener la ruta de la misma forma que el helper.

Muchas gracias.

christian

unread,
Mar 26, 2009, 9:04:13 AM3/26/09
to cakep...@googlegroups.com
Una solución simple (y un tanto rebuscada) es tener un div oculto en el layout y guardar la direccion del webroot, algo así:

<div id="webroot" style="display: none;"><?php echo $this->controller->webroot?></div>

Luego la puedes recuperar con jquery asi: $("#webroot").text(); y concatenarla con el resto de la direccion de tu imagen.

Si te es mas útil guardar la direccion de base del site puedes usar $this->controller->base en lugar de  $this->controller->webroot

Saludo
Christian

Fran Iglesias

unread,
Mar 26, 2009, 10:11:38 AM3/26/09
to cakep...@googlegroups.com
Prueba src="img/products/images/'

El 26/03/2009, a las 14:04, christian escribió:

> Código javascript:
> $("#image img").replaceWith('<img src="/DEMO/img/products/images/'+id
> +'.jpg" alt="" />');

---
Fran Iglesias <cakep...@gmail.com>
http://cakephpilia.blogspot.com

José Lorenzo

unread,
Mar 26, 2009, 10:29:18 AM3/26/09
to cakep...@googlegroups.com
La manera mas simple es iniciar una variable al inicio del documento que en la que hagas:

<script>
var webroot = $this->webroot;
</script>

y mas adelante....

$("#image img").replaceWith('<img src=webroot + "img/products/images/'+id

+'.jpg" alt="" />');

2009/3/26 Fran Iglesias <cakep...@gmail.com>

danilo04

unread,
Mar 27, 2009, 9:18:52 AM3/27/09
to CakePHP en Español
La que pone José Lorenzo me parece la mejor opcipón. La he utilizado
ántes y me funciona muy bien.

On 26 mar, 09:29, José Lorenzo <jose....@gmail.com> wrote:
> La manera mas simple es iniciar una variable al inicio del documento que en
> la que hagas:
> <script>
> var webroot = $this->webroot;
> </script>
>
> y mas adelante....
>
> $("#image img").replaceWith('<img src=webroot + "img/products/images/'+id
> +'.jpg" alt="" />');
>
> 2009/3/26 Fran Iglesias <cakephpi...@gmail.com>
>
>
>
> > Prueba src="img/products/images/'
>
> > El 26/03/2009, a las 14:04, christian escribió:
>
> > > Código javascript:
> > > $("#image img").replaceWith('<img src="/DEMO/img/products/images/'+id
> > > +'.jpg" alt="" />');
>
> > ---
> > Fran Iglesias <cakephpi...@gmail.com>
> >http://cakephpilia.blogspot.com

pablo

unread,
Mar 27, 2009, 9:22:07 AM3/27/09
to CakePHP en Español
Muchas gracias a todos,

Primero he probado la idea de Fran Iglesias pero no funciona y después
lo que comenta José Lorenzo y así si funciona.

Almaceno la variable...
var webroot = '<?php echo $this->webroot ?>';

Y la concateno...
$("#image img").replaceWith('<img src="'+webroot+'img/products/
images/'+id+'.jpg" alt="" />');

Muchas gracias, saludos


On 26 mar, 15:29, José Lorenzo <jose....@gmail.com> wrote:
> La manera mas simple es iniciar una variable al inicio del documento que en
> la que hagas:
> <script>
> var webroot = $this->webroot;
> </script>
>
> y mas adelante....
>
> $("#image img").replaceWith('<img src=webroot + "img/products/images/'+id
> +'.jpg" alt="" />');
>
> 2009/3/26 Fran Iglesias <cakephpi...@gmail.com>
>
>
>
> > Prueba src="img/products/images/'
>
> > El 26/03/2009, a las 14:04, christian escribió:
>
> > > Código javascript:
> > > $("#image img").replaceWith('<img src="/DEMO/img/products/images/'+id
> > > +'.jpg" alt="" />');
>
> > ---
> > Fran Iglesias <cakephpi...@gmail.com>
> >http://cakephpilia.blogspot.com

christian

unread,
Mar 27, 2009, 9:42:24 AM3/27/09
to cakep...@googlegroups.com
Si definitivamente, la propuesta de Jose Lorenzo parece la mas indicada, de todos modos creo que la de Fran Iglesias hubiese funcionado si agregabas un slash al comienzo de la url:
src="/img/products/images/' ,en lugar de: src="img/products/images/'

Saludos
Christian

christian

unread,
Mar 27, 2009, 9:47:55 AM3/27/09
to cakep...@googlegroups.com
me corrijo, creo que sería: src="/app/webroot/img/products/images/'

teng...@gmail.com

unread,
Mar 27, 2009, 10:25:11 AM3/27/09
to cakep...@googlegroups.com
no, app es la carpeta local del Cake, no la del webroot, la opcion de jose Lorenzo es la correcta, siempre usa la bariable $this->webroot cuando quieras acceder a las carpetas publicas del cake
Reply all
Reply to author
Forward
0 new messages