문제

첫 번째 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">

문제는 사용자 ID (이 경우 8)가 양식 조치에 추가되고 있다는 것입니다. 여기서는 실제로 문제가되지 않지만 해시를 통과하고 싶을 때 컨트롤러로 전달하고 싶을 때는 다음과 같습니다.

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

$static_hash 이제 URL의 해시 대신 8로 채워져 있습니다.

나는 사용하기보다는 양식 태그를 직접 만들어서 이것을 분류 할 수 있다는 것을 알고 있습니다. $form->create 그러나 이것을하는 더 케이크 같은 방법이 있습니까?

도움이 되었습니까?

해결책

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

전달하고 싶지 않은 매개 변수를 명시 적으로 설정하십시오 null 또는 false. 불행히도 케이크가 자신의 이익을 위해 너무 지능적이 되려고하는 경우입니다. ;영형)

아마도 같은 URL에 다시 게시하기 위해 이와 같은 일을 할 수도 있습니다.

$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