我的问题基于以下代码:
<?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?
抱歉我的英文。
答案 0 :(得分:0)
你有一个错字:
'methdo' => 'POST',
此外,如果您删除了要使用“删除”的内容。
我不确定为什么Cake默认使用put在这里。
答案 1 :(得分:0)
修复了第一个问题!
'type' => 'POST'
取而代之的是'method' => 'POST'
。
第二个问题:如果我删除'type' => 'POST'
,则输入保持值PUT。
所以,问题现在解决了,我继续不明白为什么CakePHP在输入中设置了PUT。