【问题标题】:Generating Javascript view block with CakePHP使用 CakePHP 生成 Javascript 视图块
【发布时间】:2012-07-18 00:46:11
【问题描述】:

考虑这样的 URL:

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 发生变化。有没有我不知道的更简单的方法?

【问题讨论】:

    标签: php javascript arrays cakephp


    【解决方案1】:

    对于 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'); ?>
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这……真是一个好主意。谢谢:)
      • 没问题。这就是您要寻找的答案吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2013-10-11
      • 1970-01-01
      相关资源
      最近更新 更多