【问题标题】:How can use edit form only post method using cakePHP 2.x?如何使用 cakePHP 2.x 仅使用编辑表单发布方法?
【发布时间】:2014-03-05 08:52:08
【问题描述】:

我正在使用 CakePHP 2.x。当我提交编辑表单时,它不适用于以下代码:

if ($this->request->is(array('post'))) {
    ...

    if ($this->User->save($this->request->data)) {
        ...
    } else {
        ...
    }
} else {
    ...
}

但它适用于以下代码:

if ($this->request->is(array('post','put'))) { //change made here
    ...

    if ($this->User->save($this->request->data)) {
        ...
    } else {
        ...
    }
} else {
    ...
}

但我希望我的代码仅适用于第一个代码。如果您有任何解决方案,请帮助我。

编辑: 请注意,当我们每次使用 CakePHP 创建一个隐藏的输入变量名称 _method 时,它的值设置为 POST 在添加表单和 PUT在编辑表格上。 CakePHP 请求处理程序使用 _method 变量,而不是表单类型属性。

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    当您使用 type=>file 创建表单时,Cakephp 会使用 PUT 请求方法覆盖 POST。 您必须使用

    进行检查
    if($this->request->is('put') || $this->request->is('post')) {
    }
    

    【讨论】:

      【解决方案2】:

      在创建表单时添加选项 'type' => 'post',我相信它会始终使用 post 作为其方法。示例:

       echo $this->Form->create('Model', array('type' => 'post'));
      

      【讨论】:

      • 它正在工作。但是当我使用 'type' = > 'file' 时,它就不起作用了。
      • 为什么要这样? file 不是有效的 HTTP 请求方法。
      • 指定“文件”将表单提交方法更改为“发布”,并在表单标签上包含“multipart/form-data”的编码类型。如果表单中有任何文件元素,则将使用此选项。缺少正确的 enctype 属性将导致文件上传不起作用: Form->create('User', array('type' => 'file')); ?> 输出:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 2013-02-19
      相关资源
      最近更新 更多