Bien le bonjour à tous,

J'ai une petite question, un petit problème ^^. En fait j'ai besoin de faire apparaître une div avec une class au survol d'une image. Si je le fais "naturellement" cela fonctionne très bien, mais j'ai envie de garder une cohérence avec mes liens, et de le faire proprement du coup je suis obligé d'utiliser le htmlhelper... ^^

Mon lien propre :

<section class="main clearfix">
<?php foreach ($albums as $album): ?>
    <div class="work">
        <?php echo $this->Html->image($album'Album']'thumbnail'], array(
            "alt" => $album'Album']'titre_album'],
            'url' => array('controller' => 'portfolio', 'action' => 'album_detail', $album'Album']'id']),
        ));?>
    </div>
<?php endforeach; ?>
</section>

Mon lien pas propre ^^ :

<section class="main clearfix">
<?php foreach ($images as $image): ?>
    <div class="work">
        <a href="portfolio/detail/<?php echo $image'Portfolio']'id_image'];?>">
            <?php echo $this->Html->image($image'Portfolio']'url_image']); ?>
            <div class="caption">
                <div class="work_title">
                    <h1><?php echo $image'Portfolio']'title_image'];?></h1>
                </div>
            </div>
        </a>
    </div>
<?php endforeach; ?>
</section>

Si quelqu'un avait une petite idée, ou a déjà été confronté à ce problème je ne dis pas non ^^.

Merci d'avance !

5 réponses


Tu peux utiliser la fonction url du HtmlHelper pour générer proprement ton lien !

http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::url

C'est ce que j'ai fait si tu regardes mon "lien propre". Et c'est justement là ma question. Comment intégrer une autre div dans les options du htmlhelper ^^

Tu n'as pas compris ce que je voulais dire ! Dans ton bout de code avec le lien pas propre, au lieu de mettre l'url en dure, tu peux utiliser

$this->Html->url()

<section class="main clearfix">
<?php foreach ($images as $image): ?>
    <div class="work">
        <a href="<?php echo $this->Html->url(array('controller' => 'portfolio', 'action' => 'album_detail', $album'Album']'id']));?>">
            <?php echo $this->Html->image($image'Portfolio']'url_image']); ?>
            <div class="caption">
                <div class="work_title">
                    <h1><?php echo $image'Portfolio']'title_image'];?></h1>
                </div>
            </div>
        </a>
    </div>
<?php endforeach; ?>
</section>

Comme ça tu n'as pas besoin de changer l'url si tu modifie ta route !

Maintenant, si tu veux vraiment tout générer via le HtmlHelper, la seule solution que je vois c'est de modifier la fonction image dans AppHelper.php (app/View/Helper/AppHelper.php) ou de te créer ton propre Helper

Bah c'est ce que j'ai fait dans mon lien propre ^^. La seule que tu fais là du coup c'est de mettre le lien dans le href. Moi ce que je faisais c'était de mettre l'image en mode "lien" via le html->image. Je mettais donc l'url dedans mais pas en dur ^^.

Je vais essayer de mettre la route dans le href et voir ce que ça donne, merci à toi :)

Bonsoir.
Tu as du mal à comprendre christoufe8625.
Ne confonds pas :

$this->Html->url

et

$this->Html->link

Le premier sert à générer une url et le second à générer un lien (avec les balises <u><a ...>...</a></u>), ils ne sont pas utilisé dans le même cas.