2011-02-08 2 views
1

username, passwordtype 필드가있는 user 테이블이 있습니다. type직원, 공급 업체고객과 같은 이들 중 하나 또는 조합 일 수 있습니다. 사용자는 공급 업체클라이언트이거나 다른 조합 일 수 있습니다. type 필드의 경우 다중 확인란을 사용했습니다 (아래 코드 참조). 이 코드는 쉼표로 구분 된 값으로 여러 값을 저장cakephp에서 사용자 레코드를 편집하는 동안 체크 박스가 선택되지 않았습니다

app/models/user.php 

function beforeSave() { 
     if(!empty($this->data['User']['type'])) { 
      $this->data['User']['type'] = join(',', $this->data['User']['type']); 
     } 
     return true; 
    } 

: 나는 beforeSave 콜백 메소드를 사용한 모델 파일에서

<div class="users form"> 
<?php echo $this->Form->create('User');?> 
    <fieldset> 
     <legend><?php __('Add User'); ?></legend> 
    <?php 
     echo $this->Form->input('username'); 
     echo $this->Form->input('password'); 

     echo $this->Form->input('type', array('type' => 'select', 'multiple' => 'checkbox','options' => array(
    'client' => 'Client', 
    'vendor' => 'Vendor', 
    'employee' => 'Employee' 
    ) 
)); 
    ?> 

    </fieldset> 
<?php echo $this->Form->end(__('Submit', true));?> 
</div> 

이의 의견/사용자/add.ctp 파일입니다 데이터 베이스.

사용자를 편집 할 때 주된 문제가 있습니다. 사용자가 사용자 생성 중에 여러 유형을 선택한 경우 해당 유형에 대한 확인란이 하나도 선택되어 있지 않습니다.

+3

선택하지 않은 배치된다. 이 모델의 코드에 시간을 투자하기 전에 해당 부분을 올바르게 가져 오십시오. User-> Type은 일대 다 관계입니다. 이러한 유형의 관계는 사용자가 1 ~ 3 개의 행을 가질 수있는 두 번째 테이블로 표시됩니다. 단일 열에 여러 값이있는 경우 (즉, 열 값이 원자가 아닌 경우) 디자인을 표준화하지 않았습니다. –

+0

@ Dan : 사용자와 유형을 관련시키기 위해 새로운 테이블 유형 및 user_type 테이블을 작성해야한다고 말하고 싶습니다. –

+0

반드시 유형 테이블이 아니라 user_type 테이블이 필요합니다. –

답변

0

beforeSave()에 $this->data['User']['type'] = join(',', $this->data['User']['type']);이 있으므로 afterFind() $this->data['User']['type'] = explode(',', $user['User']['type']);에서 동일한 작업을 수행해야 다시 배열이됩니다.

그러나 이것은 끔찍한 디자인이므로 올바르게 수행해야합니다. 이 $this->data['User']['type'] = explode(',', $user['User']['type']); 및 배열을 다음 후 dogmatic69 @

0

제대로 확인 상자 당신은 처음부터 잘못된 모델링 데이터가 여전히

관련 문제