質問

私は私の最初のCakePHPアプリケーションを書いていると、ちょうど、ユーザーがサイトへのリンクを含む電子メールを受信したパスワードのリセットフォームの第二の部分を書いていますし、彼らはそれをクリックしたとき、彼らは入って確認するように要求しています新しいパスワードます。

ページの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">

問題は、フォームアクションに追加されている(ここでは8)のユーザIDです。ここは本当に問題ではないのですが、私は私のコントローラにハッシュを通過したいときます:

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

$static_hashについて8なく、URLのハッシュが移入されます。

私は自分自身にタグを付け、フォームを作成するのではなく$form->createを使用してこれを並べ替えることができ知っているが、これを行うためのより多くのケーキ状方法は何ですか?

役に立ちましたか?

解決

$form->create('User', array('action' => '…', 'id' => false));
あなたがnullまたはfalseに渡されたくないのparams

ただ、明示的に設定。これは、残念ながらケーキは、自身の利益のために少しも知的になろうとする場合です。 ; O)

あなたはおそらくも、再び同じURLにPOSTするために、このような何かを行うことができます:

$form->create('User', $this->here);

他のヒント

どのように代わりにフォームデータのパラメータとして渡すについてます:

<?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
}

}

このヘルプを願っています:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top