1

私は最初のCakePHPアプリケーションを作成しており、パスワードリセットフォームの2番目の部分を作成しています。このフォームでは、ユーザーがサイトへのリンクを含む電子メールを受信し、クリックすると新しいパスワードの入力と確認を求められます。

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

問題は、ユーザーID(この場合は8)がフォームアクションに追加されていることです。ここでは実際には問題ではありませんが、ハッシュをコントローラーに渡したい場合は、次のようにします。

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

$static_hashURLからのハッシュではなく8が入力されるようになりました。

使用するのではなく、自分でフォームタグを作成することでこれを整理できることは知って$form->createいますが、これを行うためのより簡単な方法はありますか?

4

2 に答える 2

1
$form->create('User', array('action' => '…', 'id' => false));

渡したくないパラメータを明示的に設定するだけnullですfalse。残念ながら、これはCakeが自分の利益のために少し賢すぎようとする場合です。; o)

同じURLに再度POSTするために、おそらく次のようなことを行うこともできます。

$form->create('User', $this->here);
于 2010-02-16T13:58:48.317 に答える
0

フォームデータの代わりにパラメータとして渡すのはどうですか?

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

}

この助けを願っています:)

于 2010-02-16T17:56:55.693 に答える