代码之家  ›  专栏  ›  技术社区  ›  Tom Wright

当我使用jquery修改隐藏输入的值时,为什么cakephp会bork?

  •  0
  • Tom Wright  · 技术社区  · 15 年前

    我正在使用cakephp构建一个调查,并希望使用javascript(特别是jquery,因为它在其他地方使用)来修改一些隐藏的输入。

    很明显,注释掉jquery的冒犯行可以让cake正确地完成它的工作。但当使用jquery修改这些值时,会发生以下情况:

    (default) 2 queries took 2 ms http://tdwright.co.uk/cake-error.png

    要只获取问题中的一个隐藏输入,以下是相关代码:

    <?php echo $form->hidden('bigLayout', array('value'=>'1')); ?>
    
    <script> $('#ResponseBigLayout').val('0');</script>
    

    此外,我可以使用firebug仅使用该行的javascript来复制错误。使用篡改数据不会显示任何明显的信息。最后,更改PHP中的默认值不会导致错误。

    有人知道这里会发生什么吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   jitter    15 年前

    试用使用

    <?php echo $form->hidden('bigLayout', array('value'=>'1','secure'=>false)); ?>
    

    <?php echo $form->hidden('bigLayout', array('value'=>'1','secure'=>'false')); ?>
    

    从源头上( FormHelper: hidden() )对于隐藏的输入,它看起来像cakephp secure = true 默认情况下。

        2
  •  1
  •   verbal    15 年前

    如果我修改了表单值(隐藏的)或属性(即禁用的),那么在beforefiler中的控制器中,我会使用如下内容:

    function beforeFilter() {
        parent::beforeFilter();
    
        if ($this->action == 'add') {
            $this->Security->enabled = false;
        }
    }