2011-05-05 6 views
0

감사관 :추가 데이터베이스 행 버튼 CakePHP의

function add(){ 
    if (!empty($this->data)) { 
     $qnote = $this->Qnote->save($this->data); 
     if (!empty($qnote)) { 
      $this->data['Step']['qnote_id'] = $this->Qnote->id; 
      $this->Qnote->Step->save($this->data); 
     } 
     $this->Session->setFlash('Your note has been saved.'); 
     $this->redirect(array('action' => 'index')); 
    } 
} 

폼.

<?php 
$userID = Authsome::get('id'); 
echo $form->create('Qnote', array('action'=>'add')); 
echo $form->input('Qnote.id', array('type' => 'hidden')); 
echo $form->input('Qnote.user_id', array('value' => $userID, 'type' => 'hidden')); 
echo $form->input('Qnote.subject'); 
echo $form->input('Qnote.body', array('rows' => '3')); 
echo $form->input('Step.id', array('type' => 'hidden')); 
echo $form->input('Step.user_id', array('value' => $userID, 'type' => 'hidden')); 
echo $form->input('Step.body', array('rows' => '3')); 
echo $form->end('Save Notes'); 
?> 

이 양식은 2 가지 모델의 데이터를 추가합니다. 모델 1 = Qnote; 모델 2 = 단계; 데이터를 모델에 추가 할 수 있습니다.

단추에 양식을 추가 할 수 있습니까? 단추를 사용하면 Step.data를 Step 모델에 여러 개 추가 할 수 있습니다. 일부는 +1 버튼을 좋아합니다.

기본적으로 Qnote 당 여러 단계를 추가하고 싶습니다.

누군가 내가 올바른 방향으로 나를 어떻게 이끌어 낼 수 있습니까?

+1

saveAll 메서드를 살펴보십시오. http://book.cakephp.org/view/1031/Saving-Your-Data 데이터 서식을 지정해야합니다. – JohnP

답변

0

이것은 jQuery와 관련이 있습니다. 기본적으로 jQuery를 사용하여 CakePHP 규칙 (예 : Step.0.user_id)에 동적으로 입력을 추가하면됩니다. +1에 대해 지금해야 할 일 : 0을 세어야하기 때문에 Step.1.user_id 등이됩니다.

첫 번째 옵션 : 당신이 모델 Step에 대한 귀하의 입력을 보유하고있는 클래스 step와 사업부를 복제하고이 경우이

var count = 1; 
$('#add_step').click(function() { 
    var new_form = $('.Step').eq(0).clone(); 

    $('input, textarea, select, radio', new_form).filter('[name^="data"]').each(function() { 
     var name = $(this).attr('name'); 
     var new_name = name.replace(/\[\d*\]/, '['+count+']'); 
     $(this).attr('name', new_name).attr('value', ''); 
    }); 
    $('#YourForm').after(new_form); 
    count+; 
    return false; 
}); 

을 수행하기위한 jQuery를-스크립트를 사용합니다. 그런 다음 이름 속성을 바꾸어 변수 count의 새 값을 통해 0을 대체하십시오. count++을 사용하면 원하는만큼 많은 단계를 추가 할 수 있습니다.

이것은 jQuery 전용 솔루션이며 사용자 환경에 따라 추가 작업이 필요할 수 있습니다.

두 번째 옵션 : 요소와 AJAX를 사용하는

당신은 또한 당신의 양식을 보유하고 카운터를 돌봐 요소를 렌더링하여 StepsController에서 함수를 작성할 수 있습니다.

세 번째 옵션 :이 양식을 통해 반복하는 당신이에 대한 루프에서 매개 변수로 삼을 사용할 수 /qnote/add/3 같은 URL이있는 경우

을 원하는 얼마나 많은 옵션을 결정하기 위해 URL-매개 변수를 사용하여 - 입력. 당신은주의를 기울여야합니다. 결국 값을 입력하면 다른 단계를 추가 할 때 값이 양식과 함께 전송되어 손실되지 않도록하십시오.

희망은 올바른 방향으로 나아갈 수 있기를 바랍니다.