表单助手生成的表单方法不正确

时间:2014-01-16 16:22:15

标签: php cakephp

我的问题基于以下代码:

<?php echo $this->Form->create(
  'Page', array(
    'url' => array(
      'controller' => 'pages',
      'action' => 'delete',
      $this->request->data['Page']['id'],
      'admin' => true
    ),
    'id' => 'PageDeleteForm',
    'method' => 'POST',
    'class' => 'hide'
  )
); ?>
<?php echo $this->Form->end() ?>   

CakePHP生成的结果是:

<form action="/admin/pages/delete/16" id="PageDeleteForm" method="post" class="hide" accept-charset="utf-8">
    <div style="display:none;">
        <input type="hidden" name="_method" value="PUT">
    </div>
</form>

因为我的删除方法返回:方法不允许,并且不删除寄存器。

问题,谜

所以问题是:默认情况下,CakePHP使用 method =&gt;创建一个表单POST ,并使用POST设置输入。但就我而言,它设置为 PUT 。为什么?

动作:

/**
 * admin_delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
  public function admin_delete($id = null) {
    $this->Page->id = $id;
    if (!$this->Page->exists()) {
      throw new NotFoundException(__('Página inválida'));
    }

    $this->request->onlyAllow('post', 'delete');

    $page = $this->Page->getById($id);

为什么CakePHP会覆盖我的指令('method' => 'POST')并更改为PUT?

抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

你有一个错字:

'methdo' => 'POST',

此外,如果您删除了要使用“删除”的内容。

我不确定为什么Cake默认使用put在这里。

答案 1 :(得分:0)

修复了第一个问题!

'type' => 'POST'

取而代之的是'method' => 'POST'


第二个问题:如果我删除'type' => 'POST',则输入保持值PUT。


所以,问题现在解决了,我继续不明白为什么CakePHP在输入中设置了PUT。