2013-06-03 3 views
0

저는 정책이라는 테이블과 Declination이라는 테이블을 가지고 있습니다. 정책 hasMany 성향. 적위는 정책에 속합니다. 이제 그런 말로, 나는 Declination 테이블의 Policy_id라는 필드에 정책 ID를 저장하려고합니다. 불행히도, 나는 운이 없다. 나는 내 견해에 문제가 있다고 생각한다. 제가 뭘하고 있는지 설명해 드리겠습니다. 제 컨트롤러에서 1 레코드를 읽고 그 배열에서 policy_id로 ID를 설정하고 있습니다. 일단 내가 그 변수를 set()을 통해 뷰에 보냅니다. 일단 거기에 숨겨진 필드에서 해당 변수를 사용하고 있습니다. 스크립트를 실행하면 데이터가 저장되지만 ID가 채워지지 않습니다. 나는 2 일 이상 이것에 붙어 있었고, 그것 주위에 나의 머리를 감쌀 수 없다! 내가 추가 할 수있는 한 가지 ... 해당 정책의 ID를 URL을 통해 전달하고 있습니다. 따라서 URL은 localhost/site/add/xxxx-xxxx-xxxx와 유사합니다. 나는 거기에서 그것을 잡아야하는지 확신하지 못한다. 내가 너를 설명 할 수 있거나 내가 배울 수있는 곳을 알려주지. 왜 안되는지에 대해 알려주지 말아야한다. 감사!Cakephp 1.3 뷰에 ID 설정/패스

모델

<?php 

클래스 적위는 AppModel이 { 공공 $ 이름 = '적위를'확장;

public $virtualFields = array(
    'name' => 'CONCAT(Declination.first_name,\' \',Declination.last_name)' 
); 

public $belongsTo = array(
    'Policy' => array(
     'className' => 'Policy', 
     'foreignKey' => 'policy_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    'Reason' => array(
     'className' => 'Reason', 
     'foreignKey' => 'reason_id' 
    ), 
    'ContactType' => array(
     'className' => 'ContactType', 
     'foreignKey' => 'contact_type_id' 
    ) 
); 

public function beforeSave() { 
    if (array_key_exists('dated', $this->data[$this->alias]) && !empty($this->data[$this->alias]['dated'])) { 
     $this->data[$this->alias]['dated'] = date('Y-m-d', strtotime($this->data[$this->alias]['dated'])); 
    } 
    if(array_key_exists('reason_id', $this->data[$this->alias])) { 
     if (!$this->Reason->isOther($this->data[$this->alias]['reason_id'])) { 
      $this->data[$this->alias]['other'] = null; 
     } 
    } 
    return true; 
} 

컨트롤러

class DeclinationsController extends AppController { 

public $name = 'Declinations'; 

/** 
* add function. 
* 
* @access public 
* @param mixed $id (default: null) 
* @return void 
*/ 
public function add($id = null) { 
    if (!empty($this->data)) { 
     $this->loadmodel('Policy'); 
     $policy = $this->Policy->read('id', $id); 
     $policy_id = $policy['Policy']['id']; 

     $this->Declination->create(); 
     if ($this->Declination->saveAll($this->data['Declination'])) { 
      $this->Session->setFlash(__('Declinations saved.', true)); 
      $this->redirect(array(
       'controller' => 'coverages', 
       'action' => 'view', 
       $id 
      )); 
     } else { 
      $this->Session->setFlash(__('Declinations failed to save.', true)); 
     } 
    } 

    $reasons = $this->Declination->Reason->find('list'); 
    $contactTypes = $this->Declination->ContactType->find('list'); 
    $this->set(compact('id', 'reasons', 'contactTypes', '$policy_id')); 
} 

보기 내가 UiForm 같은데요

<?php echo $this->Ui->widgetHeader(__('Policy Declinations', true)); ?> 
<?php $this->Ui->widgetContent(); ?> 
    <?php echo $this->UiForm->create('Declination', array(
     'url' => array(
      'controller' => 'declinations', 
      'action' => 'add', 
      $id 
     ) 
    )); ?> 
    <?php for ($i = 0; $i < 3; $i++): ?> 
     <h4>Declination <?php echo ($i + 1); ?></h4> 


     <?php echo $this->UiForm->create("Declination.{$i}.policy_id", array('type' => 'hidden', 'value' => '$policy_id')); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.first_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.last_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.company"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.contact_type_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.phone_number"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.reason_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.other", array(
      'label' => 'If other, please supply a reason' 
     )); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.dated", array(
      'type' => 'text', 
      'readonly' => 'readonly', 
      'data-datepicker' => '' 
     )); ?> 
    <?php endfor; ?> 
    <?php echo $this->UiForm->end('Continue'); ?> 
<?php echo $this->Ui->widgetContentEnd(); ?> 

답변

0

나는 그것을 발견했다. 내보기에있는 $ id 변수를 잡아 내 값으로 설정했습니다. 그래서 내 value 대신 $ policy_id ....는 $ id입니다. 나는 또한 내가 필요없는 컨트롤러에서 몇 가지를 삭제했다. 아래를 봐주세요. 희망이 사람을 돕는다!

보기

<?php echo $this->Ui->widgetHeader(__('Policy Declinations', true)); ?> 
<?php $this->Ui->widgetContent(); ?> 
    <?php echo $this->UiForm->create('Declination', array(
     'url' => array(
      'controller' => 'declinations', 
      'action' => 'add', 
      $id 
     ) 
    )); ?> 
    <?php for ($i = 0; $i < 3; $i++): ?> 
     <h4>Declination <?php echo ($i + 1); ?></h4> 

     <?php echo $this->UiForm->create('Declination'); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.policy_id", array('type' => 'hidden', 'value' => $id)); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.first_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.last_name"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.company"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.contact_type_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.phone_number"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.reason_id"); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.other", array(
      'label' => 'If other, please supply a reason' 
     )); ?> 
     <?php echo $this->UiForm->input("Declination.{$i}.dated", array(
      'type' => 'text', 
      'readonly' => 'readonly', 
      'data-datepicker' => '' 
     )); ?> 
    <?php endfor; ?> 
    <?php echo $this->UiForm->end('Continue'); ?> 
<?php echo $this->Ui->widgetContentEnd(); ?> 

컨트롤러

public function add($id = null) { 
    if (!empty($this->data)) { 
     $this->Declination->create(); 
     if ($this->Declination->saveAll($this->data['Declination'])) { 
      $this->Session->setFlash(__('Declinations saved.', true)); 
      $this->redirect(array(
       'controller' => 'policies', 
       'action' => 'view', 
       $id 
      )); 
     } else { 
      $this->Session->setFlash(__('Declinations failed to save.', true)); 
     } 
    } 

    $reasons = $this->Declination->Reason->find('list'); 
    $contactTypes = $this->Declination->ContactType->find('list'); 
    $this->set(compact('id', 'reasons', 'contactTypes')); 
} 
0

은 어떤 종류의 사용자 지정 도우미입니다. Form 헬퍼와 비슷하다면 create 문에서 오류처럼 보입니다. 그것은이어야한다 :

<?php echo $this->UiForm->create('Declination'); ?> 
<?php echo $this->UiForm->input("Declination.{$i}.policy_id", array('type' => 'hidden', 'value' => '$policy_id')); ?> 
+0

내가 시도하지만 난 운이 없었다. 그렇게 말하면, 스크립트 $ policy_id가 원하는 ID 대신 데이터베이스에서 실행됩니다. 나는 이것이 작은 무엇인가 알고있다. 그러나 나는 그것에 관한 나의 손가락을 뒀다. – SkillSet