代码之家  ›  专栏  ›  技术社区  ›  Loftx

在使用CakePHP FormHelper提交post表单时传递URL变量时出现问题

  •  1
  • Loftx  · 技术社区  · 16 年前

    页面的url如下所示:

    /users/reset_password_confirm/23f9a5d7d1a2c952c01afacbefaba41a26062b17
    

    该视图类似于:

    <?php echo $form->create('User', array('action' => 'reset_password_confirm')); ?>
    <?php 
        echo $form->input('password', array('label' => 'Password'));
        echo $form->input('confirm_password', array('type' => 'password', 'label' => 'Confirm password'));
        echo $form->hidden('static_hash');
    ?>
    <?php echo $form->end('Reset password'); ?>
    

    <form id="UserResetPasswordConfirmForm" method="post" action="/users/reset_password_confirm/8">
    

    function reset_password_confirm($static_hash=null) {
        // function body
    }
    

    $static_hash 现在填充为8,而不是URL中的哈希。

    我知道我可以通过自己创建表单标签而不是使用 $form->create 但是有没有一种更简单的方法呢?

    2 回复  |  直到 16 年前
        1
  •  1
  •   deceze    16 年前
    $form->create('User', array('action' => '…', 'id' => false));
    

    只需显式设置不希望传递给的参数 null false . 不幸的是,这是一个蛋糕为了自身利益而试图变得过于聪明的例子;o)

    $form->create('User', $this->here);
    
        2
  •  0
  •   Furunomoe    16 年前

    不如将其作为参数而不是表单数据传递:

    <?php
    echo $form->create('User', array('action' => 'reset_password_confirm', $static_hash));
        echo $form->input('password', array('label' => 'Password'));
        echo $form->input('confirm_password', array('type' => 'password', 'label' => 'Confirm password'));
    echo $form->end('Reset password');
    ?>
    

    在控制器中:

    function reset_password_confirm($static_hash = null) {
    
    // Check if form is submitted
    if (!empty($this->data)) {
      // if it submitted then do your logic
    } else {
      $this->set('static_hash', $static_hash); // Else, pass the hash to the view, so it can be passed again when form is submitted
    }
    
    }
    

    推荐文章