저는 정책이라는 테이블과 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(); ?>
내가 시도하지만 난 운이 없었다. 그렇게 말하면, 스크립트 $ policy_id가 원하는 ID 대신 데이터베이스에서 실행됩니다. 나는 이것이 작은 무엇인가 알고있다. 그러나 나는 그것에 관한 나의 손가락을 뒀다. – SkillSet