views:

1260

answers:

2

I have some images inside links that I want to essentially look like this:

<a href="/path/to/img.png"><img src="/path/to/img.png" /></a>

Clicking on the link should load the image it contains. I'm trying to use CakePHP's HTML helper to do this, as follows:

<?php
  echo $html->link(
    $html->image('img.png'),
    'img.png',
    array('escape' => false)
  );
?>

When I do this, however, I get the following code:

<a href="/pages/img.png"><img src="/path/to/img.png" /></a>

Without using absolute URLs, can I make the link's href attribute point to the image's correct location?

Thanks!

+1  A: 

This should do the trick:

echo $html->image('image.png', array('url' => '/' . IMAGES_URL . 'image.png'));
deceze
Perfect! I didn't know about the `IMAGES_URL` constant. Thanks.
Jared
+2  A: 

you can also do this in 1.2

echo $html->link(
    $html->image('img.png'),
    'img.png',
    array(),
    null, 
    false
  );

or in 1.3

echo $html->link(
    $html->image('img.png'),
    'img.png',
    array(),
    array( 'escape' => false ),     
  );
dogmatic69
Thanks for the response, but by leaving the link URL as `img.png` Cake uses the `Pages` controller to handle it, making the URL `example.com/pages/img.png`. This is why the `IMAGES_URL` constant is needed. My code ended up looking like this: echo $html->link( $html->image('img.png'), '/' . IMAGES_URL . '/img.png', array('escape' => false) );
Jared