Добавить в <body>тег приложения cakePHP - PullRequest
2 голосов
/ 19 декабря 2009

У меня есть приложение, в котором мне нужно вызвать JS в событии onLoad тега BODY двух форм. Однако я не могу найти, как изменить тег только для них. Кто-нибудь знает?

Frank

Ответы [ 3 ]

6 голосов
/ 19 декабря 2009

inkedmn , безусловно, дал правильный ответ для этого случая, но в целом вы можете «передать информацию» следующим образом:

(в view / controller / view.ctp)

$this->set('bodyAttr', 'onload="something"');

(в views / layout / default.ctp)

<?php
    if (isset($bodyAttr)) {
        $bodyAttr = " $bodyAttr";
    } else {
        $bodyAttr = null;
    }
?>
<body<?php echo $bodyAttr; ?>>

Я часто так использую, чтобы добавить дополнительные классы к «элементу верхнего уровня»:

<?php
    if (!isset($docClass)) {
        $docClass = null;
    }
?>
<div id="doc" class="<?php echo $docClass; ?>">
5 голосов
/ 19 декабря 2009

Вам не нужно изменять тег body, чтобы Javascript выполнялся при загрузке страницы. Вы можете просто включить что-то вроде этого в свой макет, где это уместно:

(JQuery)

$("body").load(
    function(){
        // do stuff when the body element is loaded.
    }
);

Или, если вы хотите, чтобы код выполнялся при возникновении события document.ready:

$(function(){
        // do stuff when the document is ready
    }
);

Или, если вы не хотите использовать jQuery, вы можете сделать что-то вроде этого:

function doStuff(){
    // whatever you want to happen when the load completes
}

window.onload = dostuff;

Удачи - и, пожалуйста, уточните свой вопрос, если этот ответ не является удовлетворительным.

0 голосов
/ 04 июня 2013

Я делаю следующее:

Мы применяем $ bodyLoad в моем теле

<body <? = (isset ($ bodyLoad)? 'onload = \''. $ bodyLoad.' \'',''); ?> >

Уже в моем [действии]. Ctp, я делаю следующее:

<? php $ this-> set ('bodyLoad', 'field.focus ();');?>

Если вы хотите, вы также можете поместить этот код в контроллер.

Удачи

...