форма не забирает файл javascript - PullRequest
0 голосов
/ 01 декабря 2011

Я новичок в Cake PHP, и у меня был веб-сайт с обычными PHP и HTML, но сейчас я переключаюсь на использование Cake PHP. Проблема, с которой я сталкиваюсь, заключается в том, что она не берет javascript для слайдера, который у меня есть в меню. (Но это работает в оригинальной сети).

Итак, я сделал следующие шаги, может быть, вы увидите, где я делаю свою ошибку.

Сначала я поместил файл Javascript в webroot/js

FILE javascript.js

/**
 * 
 */
$(document).ready(function() {

    //ACCORDION BUTTON ACTION   
    $('div.accordionButton').click(function() {
        $('div.accordionContent').slideUp('normal');    
        $(this).next().slideDown('normal');
    });

    //HIDE THE DIVS ON PAGE LOAD    
    $("div.accordionContent").hide();

});

Затем я пошел в AppController и добавил следующую строку под cake/libs/controller/app_Controller

class AppController extends Controller {
    var $helpers = array('Html', 'Form', 'Javascript');
}

Затем это изменение позволило мне добавить его в макет

 FILE mylayout.ctp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <?php

       $javascript->link('javascript.js');
</head>

<?php include 'menu_nav.php';?> //this has starting <body> tag
            <?php include 'leftmenu_nav.php';?>
             <div id="content" class="divContent">
              <div id="mainContent" class="divMainContent" style="text-align: left;">
            <?php echo $content_for_layout; ?>
               </div>   
               </div>
            <?php include 'footer.php';?> //this had end </body> tag
</html>

Теперь где-то в

$content_for_layout

есть некоторые <divs>, которые используют JS, но по какой-то причине 1) я не вижу разметку JS, когда делаю исходный код страницы и 2) она не скользит, как раньше ..

Может кто-нибудь сказать, что мне не хватает в этой конфигурации CakePHP?.

Спасибо

echo $this->Html->script('javascript.js');
         echo $this->Html->script('jquery-ui-1.8.16.custom.min.js');
         echo $this->Html->script('jquery.js');
         echo $this->Html->script('jquery.MetaData.js');
         echo $this->Html->script('jquery.min.js');
         echo $this->Html->script('jquery.rating.js');
         echo $this->Html->script('jquery.rating.pack.js');
         echo $this->Html->script('jquery.validate.js');
         echo $this->Html->script('paging.js');
         echo $this->Html->script('ui.datetimepicker.js');
         echo $this->Html->script('format.js');

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Есть пара вещей, которые нужно проверить.

Во-первых, ничего не меняйте в папке с тортом.Это большой нет нет.Если вы хотите иметь контроллер приложения, просто создайте новое имя файла app_controller.php и поместите его в папку / app.Добавьте в него следующий код.

class AppController extends Controller {
   var $helpers = array('Html', 'Form', 'Javascript'); //what version are you using?
}

Способ включения файла JS зависит от того, какую версию торта вы используете.Более новая версия использует следующий синтаксис

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

http://book.cakephp.org/view/1589/script (1.3)

Далее, убедитесь, что все JS действительно включены.Посмотрите на источник и нажмите на файл JS, чтобы подтвердить, что файл загружен. Я не вижу, чтобы jquery включал где-либо, поэтому вы должны подтвердить, что jquery включен в ваш макет .

После этого убедитесь, что в вашем представлении содержится div.accordionButton div.Поскольку это не похоже на то, что оно находится в макете, откройте определенный элемент представления и проверьте там.

В качестве последнего средства добавьте alert($('div.accordionButton').length) в свой файл JS, чтобы подтвердить, что JS фактически выбирает DIV из вида.Если предупреждение показывает 0, то это означает, что это не так.

0 голосов
/ 01 декабря 2011

Вместо этого вы захотите использовать этот формат, я вставляю его в файл layout.ctp.

echo $this->Html->script('jquery.min.flip.js');

Я думаю, что существуют разные способы вызова файлов js, но я храню их в / app /webroot / js и используйте этот вызов для загрузки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...