title: Why CakePHP set _method equal PUT instead POST
body: <p>I update recently my CakePHP project to 2.4.5.</p>
  
  <p>Now, some <code>forms</code> set the <em>input hidden</em> = <strong>PUT</strong>. But, the <code>method</code> is POST.</p>
  
  <p>I don't know why this is happened.</p>
  
  <p>This is the form:</p>
  
  <pre><code>  &lt;?php echo $this-&gt;Form-&gt;create('User', array('url' =&gt; array('action' =&gt; 'new_password', $this-&gt;request-&gt;data['User']['forget_password'], 'admin' =&gt; false), 'autocomplete' =&gt; 'off')) ?&gt;
  
      &lt;?php echo $this-&gt;Form-&gt;hidden('User.id') ?&gt;
  
      &lt;fieldset&gt;
        &lt;label class="block clearfix"&gt;
          &lt;span class="block input-icon input-icon-right"&gt;
            &lt;?php echo $this-&gt;Form-&gt;password('User.password', array('label' =&gt; false, 'div' =&gt; false, 'class' =&gt; 'form-control', 'placeholder' =&gt; 'Digite a nova senha')) ?&gt;
            &lt;i class="icon-user"&gt;&lt;/i&gt;
          &lt;/span&gt;
        &lt;/label&gt;
  
        &lt;label class="block clearfix"&gt;
          &lt;span class="block input-icon input-icon-right"&gt;
            &lt;?php echo $this-&gt;Form-&gt;password('User.password_confirmation', array('label' =&gt; false, 'div' =&gt; false, 'class' =&gt; 'form-control', 'placeholder' =&gt; 'Digite novamente a nova senha')) ?&gt;
            &lt;i class="icon-user"&gt;&lt;/i&gt;
          &lt;/span&gt;
        &lt;/label&gt;
  
        &lt;div class="space"&gt;&lt;/div&gt;
  
        &lt;div class="clearfix"&gt;
          &lt;?php echo $this-&gt;Form-&gt;button('&lt;i class="icon-key"&gt;&lt;/i&gt; '. __('Enviar'), array('class' =&gt; 'width-35 pull-right btn btn-sm btn-success', 'escape' =&gt; false)) ?&gt;
        &lt;/div&gt;
  
        &lt;div class="space-4"&gt;&lt;/div&gt;
      &lt;/fieldset&gt;
    &lt;?php echo $this-&gt;Form-&gt;end() ?&gt;
  </code></pre>
  
  <p>And, the action:</p>
  
  <pre><code>/**
   * new_password method
   *
   * @access public
   * @param String $forget_password
   * @return void
   * @since 1.0 
   * @version 1.0 
   * @author Patrick Maciel
   */
  public function new_password($forget_password)
  {
  
    $user = $this-&gt;User-&gt;findByForgetPassword($forget_password);
  
    if ($user == false) {
      $this-&gt;Session-&gt;setFlash(__('Link inválido'), 'flash/frontend/error');
      $this-&gt;redirect('/');
    }
  
    $this-&gt;layout = 'login';
  
    if ($this-&gt;request-&gt;is('post')) {
      $this-&gt;User-&gt;set = $this-&gt;request-&gt;data;
      if ($this-&gt;User-&gt;validates(array('fieldList' =&gt; array('id', 'forget_password', 'password', 'password_confirmation')))) {
  
       // ...
  
      } else {
  
       // ...
  
      }
    }
  
    $user['User']['password'] = null;
    $this-&gt;request-&gt;data = $user;
  
  }
  </code></pre>
  
  <h1>So...</h1>
  
  <ul>
  <li>Why CakePHP do that?</li>
  <li>I can, if I change my method to validation <code>$this-&gt;request-&gt;is('put')</code> instead POST will work, but, I don't want do that. I want a POST, not a PUT.</li>
  <li>And I need to know, how and when CakePHP set PUT, POST or DELETE in an <code>input hidden form</code>.</li>
  </ul>
  
  <p><strong>Obs.: I not force method, using <code>'type' =&gt; 'POST'</code> because, previously this is not need.</strong></p>
  
  <p>Sorry for my english.</p>