Joseph
Joseph

Reputation: 2712

Outputting multiple elements within <a> using CakePHP HTML Helper

I'd like to know if this code...

echo $this->Html->link(
    "<h3>test</h3>".$this->Html->image("image.jpg")."<p>Some text</p>",
    "/link",
    array('escape' => false)
);

...is the best way to generate this HTML in CakePHP...

<a href="/path/to/link">
    <h3>test</h3>
    <img alt="" src="/path/to/image.jpg">
    <p>Some text</p>
</a>

Or, is there a more "correct" way of doing this? I want the and

all to be within the tag so that I can set the to display: block; in CSS and have the whole area clickable with a hover effect.

Something tells me that having HTML echoed like this isn't the right way to go about it, but I can't see an alternative if I'm going to use the HTML Helper. Is there one?

Upvotes: 0

Views: 999

Answers (2)

laul
laul

Reputation: 57

I use

$this->Html->tag('li',
                     $this->Html->link(
                     '<i class="entypo-book"></i>'.
                     $this->Html->tag('span', $nom
                     .$this->Html->tag('span', '32', array('class' => 'badge'))
                     ),
                     array('controller' => 'Pages', 'action' => 'index'),
                     array('class' => 'active', 'title' => 'Pages', 'escape' => false)
                     )
                 ); 

Upvotes: 1

Dunhamzzz
Dunhamzzz

Reputation: 14798

Just use the URL method of the HTML helper instead of the link one,do the rest as static HTML, may as well keep the amount of PHP down to a minimum as far as I see it.

<a href="<?php echo $this->Html->url($params); ?>">
    <h3>test</h3>
    <?php echo $this->Html->image($params); ?>
    <p>Some text</p>
</a>

This would be the most efficient way of doing this task. But maybe you should think about your markup structure and what you want to achieve...

Upvotes: 1

Related Questions