CakePHPのFormHelperのでポストフォーム送信でURL変数を渡す問題
-
20-09-2019 - |
質問
私は私の最初の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
}
}
このヘルプを願っています:)
所属していません StackOverflow