2010-02-17 2 views
1

그래서 나는 "이 셀프 뷰 '는 다음과 같다라는 액션을 가지는 사용자 컨트롤러가 페이지에 하나의 양식이 있습니다. 이것은 첫 번째 양식이 페이지에 렌더링되어 예상대로 작동합니다. CakePHP의 FormHelper가 출력되지 "<form>"태그

보기 코드

: (사용자/view.ctp)

<div id="passwordChange"> 
     <?php echo $form->create('User', array('action' =>'updatePass'));?> 
      <fieldset> 
      <legend><?php __('Change Password');?></legend> 
      <?php 
       $options = array('type'=>'password', 'div' => array('class' => 'required')); 
       echo $form->input(__('old_password', true), $options); 

       $options = array('div' => array('class' => 'required'), 'error' => array('confirmPassword' => __('Passwords do not match please try again',true), 'noempty' => __('Please provide a password',true))); 
       echo $form->input(__('password', true), $options); 

       $options = array('type'=>'password', 'div' => array('class' => 'required')); 
       echo $form->input(__('confirmation_password', true), $options); 

       echo $form->hidden('User.id', array('value' => $user['User']['id'])); 
      ?> 
      </fieldset> 
     <?php echo $ajax->submit(__('Change Password', true), array('url' => array('controller' => 'users', 'action' => 'updatePass'), 
        'update' => 'storage', 
        'complete' => '$("#UserUpdatePassForm input[type=password]").val(""); ')); 
    $form->end();?> 
        <a href="#">Cancel</a> 
     </div> 

양식을 생산하는 HTML "사용자/view.ctp"

<form action="/high-school-app/users/updatePass" method="post" id="UserUpdatePassForm"> 
    <fieldset style="display: none;"> 
    <input type="hidden" value="POST" name="_method"> 
    </fieldset> 
    <fieldset> 
    <legend>Change Password</legend> 
    <div class="required"> 
     <label for="UserOldPassword">Old Password</label> 
     <input type="password" id="UserOldPassword" value="" name="data[User][old_password]"> 
    </div> 
    <div class="required required"> 
     <label for="UserPassword">Password</label> 
     <input type="password" id="UserPassword" value="" name="data[User][password]"> 
    </div><div class="required required"> 
     <label for="UserConfirmationPassword">Confirmation Password</label> 
     <input type="password" id="UserConfirmationPassword" value="" name="data[User][confirmation_password]"> 
    </div> 
    <input type="hidden" id="UserId" value="" name="data[User][id]"> 
    </fieldset> 
    <div class="submit"> 
    <input type="submit" onclick="return false;" id="submit2026598409" value="Change Password" update="storage"> 
    </div> 
    <script type="text/javascript"> 
    //&lt;![CDATA[ 
    jQuery('#submit2026598409').click(function() { jQuery('#submit2026598409').parents('form').ajaxSubmit({beforeSend:function(request) {request.setRequestHeader('X-Update', 'storage');}, complete:function(request, textStatus) {$("#UserUpdatePassForm input[type=password]").val(""); }, success:function(data, textStatus) {jQuery('#storage').html(data);}, async:true, type:'post', url:'/high-school-app/users/updatePass'}); return false;}); 
    //]]&gt; 
    </script> 
    <a href="#">Cancel</a> 
</form> 

그런 다음 양식을 렌더링 할 요소와 요소를 호출합니다. (사용자/view.ctp)

echo $this->element('my_apps' , array('applications' => $applications)); 

그리고 모든 잘못 어디로 다음이 있습니다. 아무리 노력해도이 두 번째 양식을 제대로 인쇄 할 수 없습니다. 양식의 가운데 부분이 인쇄되며 여는 태그와 닫는 태그는 인쇄되지 않습니다. 그들과 함께 양식은 나에게 쓸모가 없다. 이 시점에서 나는 정말로 그것을 직접 작성하고 싶지 않습니다.

내가 출력 형태 (요소/my_apps.ctp)를 사용하는 것을 시도하고 내 요소에 코드입니다 :

<?php echo $form->create('Applications', array('url' => array('controller' => 'applications', 'action' => 'assign', 'id' => null))); ?> 
     <fieldset> 
     <legend><?php __('Assign Application to User');?></legend> 
     <?php 
      $options = array('--' => __('Select One',true), 'test' => 'test', 'test2' => 'test2'); 
      echo $form->label('Application.form_id', __('Form Name',true).":"); 
      echo $form->select('Application.form_id', $options, $selected = '--'); 

      echo $form->hidden('Application.user_id', array('value' => $user['User']['id'])); 
     ?> 
     </fieldset> 
<?php echo $form->end(__('Assign', true));?> 

이것이 무엇 "요소/my_apps.ctp" 인쇄 아웃 :

<fieldset style="display: none;"> 
    <input type="hidden" value="POST" name="_method"> 
</fieldset> 
<fieldset> 
    <legend>Assign Application to User</legend> 
    <label for="ApplicationFormId">Form Name:</label> 
    <select id="ApplicationFormId" name="data[Application][form_id]"> 
    <option value=""></option> 
    <option selected="selected" value="--">Select One</option> 
    <option value="test">test</option> 
    <option value="test2">test2</option> 
    </select> 
    <input type="hidden" id="ApplicationUserId" value="" name="data[Application][user_id]"> 
</fieldset> 
<div class="submit"> 
    <input type="submit" value="Assign"> 
</div> 

그것은 하지 않습니다 인쇄이 같은되어야 여는 태그와 닫는 태그 :

<form action="/high-school-app/applications/assign" method="post" id="ApplicationAssignForm"> 
..... 
..... 
</form> 

아이디어가 있으십니까? 디버깅을 시도해야하는 것이 도움이 될 것입니다.

업데이트 : 난 그냥 손에 코드를 알면서하는 시도조차 밖으로 제거되고

. 어떤 종류의 사후 처리가 진행되고 있습니까? 해당 양식 태그를 제거 할 책임이 있습니까?

+0

"손으로 쓰는"의미에 따라 사후 처리가 있어서는 안됩니다. CTP 파일 안에 HTML이 있습니까? 확실히 그걸 벗겨서는 안되기 때문입니다. 당신은 나를 위해 레이아웃 파일과 템플릿 파일과 함께 pastebin에 대한 링크를 넣어 줄래? 전에이 문제를 겪었지만 해결 방법을 기억하지 못합니다. 레이아웃 /보기 파일을 보는 것이 도움이 될 수 있습니다. –

+0

죄송합니다, 독일에서. 나는 ctp 파일에 html을 작성하려했지만 여전히 "form"태그를 제거했습니다. 여기에 있습니다. http://pastebin.com/m5e68275d 알려 주시면 도와 드리겠습니다. 다시 늦어서 죄송합니다. – MrDevin

+0

그래서 대답을 나는 juet 양식에 대한 아약스 요청을했고 모달 창에서 그것을 표시합니다. 훌륭하게 작동합니다. – MrDevin

답변

0

아직 아무 것도 보이지 않지만 첫 번째 형식으로 $options 변수에 다른 이름을 사용하거나 더 나은 방법으로 배열을 인라인으로 작성하는 것이 좋습니다. 두 번째 양식에서 선택한대로 선택 항목을 전달하는 데 사용되는 $options이 더 일반적입니다. 나는. 'options'에 대한 $ options를 저장하십시오.

selfView()에서 applications & formms에 값을 할당하는 것으로 표시되지 않습니다.

내 개인적인 취향이 작성하는 것입니다 :이 같은

<?php echo $form->submit(__('Assign', true)); 
     echo $form->end();?> 

:

<?php echo $form->end(__('Assign', true)) ?> 

나는 그것이 코드가 약간 더 쉽게 읽을 생각합니다.

+0

내 코드를 더 읽기 쉽게 만드는 팁을 주셔서 감사합니다. 제안 사항을 반영하기 위해 몇 가지 사항을 변경했습니다. – MrDevin

4

첫 번째 양식에서 $ form-> end()를 반향하지 않으므로 양식이 제대로 닫히지 않습니다.

+0

정답으로 표시해야합니다. 닫는 $ form-> end()를 반향하지 않으면 두 번째 양식이 전혀 렌더링되지 않습니다. –