14

This seems like it should be simple, but I'm new to CakePHP. Maybe it's just something I should write in good ole HTML, but - was hoping to find out how do to this with CakePHP's HTML helper.

I just want an image link that has target="_blank".

This is what I tried:

<?php echo $this->Html->link($this->Html->image('tmp/728x90.jpg',
    array('alt'=>'advertisement', 'height'=>'90', 
    'width'=>'728')),'http://www.google.com', array('target'=>'_blank')); ?>

(all in one line - just broke up for ease of viewing)

But when I do this, I get this:

<a href="http://www.google.com" target="_blank">&lt;img src=&quot;/img/tmp/728x90.jpg&quot; alt=&quot;advertisement&quot; height=&quot;90&quot; width=&quot;728&quot; /&gt;</a>

Any help is greatly appreciated.


Answer (thanks deceze)

<?php 

$image = $this->Html->image(
    'tmp/300x600.jpg', 
    array(
        'alt'=>'advertisement', 
        'height'=>'600', 
        'width'=>'300'
    )
);

echo $this->Html->link(
    $image,
    'http://www.google.com', 
    array(
        'target'=>'_blank', 
        'escape' => false
    )
); ?>
1
  • Answer is very useful, thanks for sharing. keep it up! Commented Mar 13, 2014 at 8:55

6 Answers 6

12
<?php echo $this->Html->link($this->Html->image('fb2.jpg',array('alt'=>'facebook', 'height'=>'90','width'=>'728')),'http://www.facebook.com', array('target'=>'_blank','escape'=>false)); ?>
Sign up to request clarification or add additional context in comments.

Comments

3

You need to tell HtmlHelper::link not to HTML escape the input.
This is all very well documented in the manual.

Comments

1

The exact code will be like this

  <?php 
         echo $this->Html->link(
                    $this->Html->image('tmp/728x90.jpg',
                                         array(
                                        'alt'=>'advertisement', 'height'=>'90',
                                        'width'=>'728')
                                       ),
                                    'http://www.google.com',
                                    array(
                                       'target'=>'_blank',
                                       'escape'=>false)
                                ); 
?>

Comments

0

You need to use the Html->image . Check it out:

http://book.cakephp.org/view/1441/image

3 Comments

I have used that - and in fact, I'm using it in my code above. Please give an example if I'm doing something wrong - the link you gave has no information regarding the target attribute for a link.
It's right in the manual: <?php echo $this->Html->image("recipes/6.jpg", array( "alt" => "Brownies", 'url' => array('controller' => 'recipes', 'action' => 'view', 6) )); ?> You see you use the url option instead of the calling html->image inside of image->link
@user470714 - While I do appreciate your attempt at answering, I recommend reading the question before answering next time. I did not ask how to make a linked image - I asked how to make a linked image open in a new tab/window with target="_blank". Neither your answer, nor your comment addressed my question.
0

Like mentioned in the Cook Book, you can use the 'url' option of the image method:

echo $this->Html->image("recipes/6.jpg", array(
   'alt' => "Brownies",
   'url' => array('controller' => 'recipes', 'action' => 'view', 6)
));

Comments

-1

echo $html->link("more",array('controller' => 'users', 'action' => 'index/welcome'), array('style'=>'_blank'), false, false);?> image('more-arrow.png', array('alt' => 'more','height'=>'11','width'=>'17'))?>

2 Comments

I don't think that is right. For one, it's got two php close tags, and two, it's setting "style" to _blank instead of target. I appreciate your taking the time to answer but this question has already been answered. :)
:] I'm having a good laugh looking at this code. Nice refresher from the hectic day.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.