使用CakePHP生成Javascript视图块

时间:2012-07-18 21:24:01

标签: php javascript arrays cakephp

考虑这样的网址:

http://site.com/upload/qeSJGs,ZWURb4,qdMMTZ,yM62UX,RlwwWT,ecw7s1

我需要将,分隔的所有6个字符串都放到Javascript数组中并插入到我的页面中。这是我的控制器动作:

public function upload($imageHashes) {
    $this->set('title_for_layout', 'Uploads successful');
    $this->set('imageHashes', explode(',', $imageHashes);
    $this->layout = 'complex';
}

在我的视图文件中我有这个:

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

现在,在scriptBlock方法中编写所有Javascript会非常麻烦,但我不能包含外部Javascript文件,因为内容会根据URL进行更改。是否有一种更容易实现的方法,我不知道?

2 个答案:

答案 0 :(得分:4)

获取imageHashes数组并对其进行json_encode。然后,对于您的脚本块,您可以执行类似

的操作
echo $this->Html->scriptBlock('var jsArray = ' . $json_encoded_array . ';', array('inline' => false)); 

答案 1 :(得分:2)

对于Cakephp 2.x和Cakephp 3.x您可以使用:

在视图或模板文件中:

<?php $this->Html->scriptStart(array('block' => 'scriptBottom', 'inline' => false)); ?>

$(document).ready(function(){
  console.log('OK');
});

<?php $this->Html->scriptEnd(); ?>

在布局文件中:

<?= $this->fetch('scriptBottom'); ?>