Je suis en train de faire le tuto en 4 cours sur la création d'un site avec cakePhp, et je me heurte souvent à des problèmes de javascript.
Je veux m'amuser avec le bootstrap et embellir mes pages. Pour cela j'ai besoin d'ajouter une classe à certains élèments créés avec les $this->Form
Si je mets directement le javascript dans la page qui m'intéresse, cela ne fonctionne pas.Par contre si j'appelle le fichier js dans le default.ctp , là c'est bon.
J'ai tenté le fameux echo scripts_for_layout mais ça ne change rien.
Je vous colle mes deux fichiers.

voilà mon login.js

$(document).ready(function() {
    $("label").addClass("control-label");
    $("form").addClass("form-horizontal");
});

et mon login.ctp

<div class="page-header">
    <h1>Identification</h1>
</div>

    <?php echo $this->Form->create('User'); ?>
    <div class="control-group">
        <?php echo $this->Form->input('username',array('label' =>"Login", 'placeholder' =>"Login", "id"=>"inputEmail", "div" => array('class' => 'controls'))); ?>
    </div>
    <div class="control-group">
        <?php echo $this->Form->input('password',array('label' =>"Mot de passe", 'placeholder' =>"Mot de passe", "id"=>"inputPassword", "div" => array('class' => 'controls'))); ?>
    </div>
    <div class="control-group"><div class="controls">
        <?php echo $this->Form->end("Se connecter"); ?>
    </div>
    </div>

<?php echo $this->Html->script('login'); ?>

et mon default.ctp

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title><?php echo $title_for_layout; ?></title>
    <link rel="stylesheet/less" type="text/css" href="<?php echo $this->Html->url('/css/bootstrap.less'); ?> ">
    <link rel="alternate" type="application/rss+xml" title="Mon site" href="<?php echo $this->Html->url(array('controller'=>'posts','action'=>'feed','ext'=>'rss')); ?>">
    <?php echo $this->Html->script('less'); ?>
    <?php echo $scripts_for_layout; ?>
    </head>

    <body>
        <div class="container"> 
            <div class="navbar">
                <div class="navbar-inner">
                    <a class="brand" href="#"><i class="icon-home"></i></a> 
                    <ul class="nav"><?php echo $this->element('menu'); ?></ul>
                    <form class="navbar-search pull-right">
                    <input type="text" class="search-query" placeholder="Search">
                    </form>
                </div>
            </div>  
        <?php echo $this->Session->flash(); ?>  
        <?php echo $content_for_layout ; ?>
        <?php echo $this->element('sql_dump'); // affiche les requêtes SQL pour debugguer ?> 
        </div>

    </body>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <?php echo $this->Html->script('bootstrap'); ?>

3 réponses


zenkiai
Réponse acceptée

Salut, Pourquoi mets tu des class à tes éléments par javascript et non directement avec ton css.

Essaye ceci dans ton login.ctp

<?php echo $this->Html->script('login', array('inline' => false)); ?>

prbaron, ça ne fonctionne toujours pas avec inline.
Aprés c'est vrai que je n'ai pas pensé au css, je vais tester

Edit:
on ne peut pas ajouter une classe avec le CSS.
Aprés si je tappe mon javascript avec la console de développement, il fonctionne.Mais jamais quand il est dans ou relié à ma page login.ctp