как вызвать функцию javascript в содержимом или представлении макета - PullRequest
0 голосов
/ 20 сентября 2018

Я вызываю функцию javascript в представлении макета.У меня общий макет для разных видов, но есть два вида, в частности, я хочу проверить screen width.В макете я могу определить сценарий, но он будет работать для всего моего приложения, поэтому я хочу упомянуть их конкретно в двух видах.Я мог бы сделать 2 файла javascript и включить их в свои соответствующие представления, но я думаю, что это не очень хороший вариант.

Как я подойду к этой проблеме?

У меня два представления mobile-view и desktop-view.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

С помощью HtmlHelper вы можете буферизовать блоки сценариев JavaScript и выводить их в <head> или предпочтительно в конце <body>, например:

ВашПредставление

// Start a script block to be echoed at the end of the <body>
$this->Html->scriptStart(['block' => 'bottomScripts']);
echo "alert('Hi, it is JavaScript.');";
$this->Html->scriptEnd();

Ничего не произойдет, если вы не выведете сценарии и / или блоки сценариев, которые буферизуются внутри блока с именем bottomScripts, в макете или представлении:

Ваш макет

    …
    <?= $this->fetch('bottomScripts'); ?>
    </body>
</html>
0 голосов
/ 21 сентября 2018

Вариант 1:

Поместите JavaScript в небольшой файл .js и включите этот файл в определенные представления с помощью echo $this->Html->script('...');

Вариант 2:

Создайте элемент с JavaScript в нем (echo $this->Html->scriptBlock('...');) и укажите ссылку на этот элемент в каждом из представлений с помощью echo $this->element('...');

...