2016-10-14 3 views
0

Yii2의 dropdownlist에 대한 기본값에 제공된 예제를 사용했지만 설명이 명확하지 않아 이해할 수 없으며 아무 것도 작동하지 않습니다. 나는 2 개의 테이블을 가지고 있는데 하나는 일자리라고하고 다른 하나는 고객이라고합니다. 작업 컨트롤러의 작성 기능에있는 드롭 다운 목록이 정상적으로 작동합니다. 폼보기에서Yii2 드롭 다운리스트 선택된 인덱스 업데이트

public function actionCreate() 
{ 
    $model = new Jobs();    
    $this->view->params['customer_list'] = ArrayHelper::map(Customers::find() 
    ->orderBy(['(last_name)' => SORT_ASC]) 
    ->all(),'id','fullName');  
    // ... 
} 

:

<?= $form->field($model, 'customer_id')->dropDownList($this->params['customer_list'],['prompt'=>'-Choose a Customer-']) ?> 

는 내가 원하는 것은 드롭 다운에서 작업 테이블에서 선택된 고객과 고객 테이블에서 전체 목록을 보여 갱신에 여기에 코드입니다 사용자가 현재 선택한 것과 다른 고객을 선택할 수 있도록 드롭 다운 목록에서 선택한 값으로 지정합니다.

컨트롤러 및 양식 코드에 대한 완전한 대답을 제공해주십시오. 고맙습니다!

답변

0

전체 컨트롤러와 양식 코드를 제공하는 것이 과도한 이유는 여러 곳에서 이미 제공 되었기 때문입니다. 가이드 ([1], [2])에서 많은 예제를 볼 수 있으며 프로젝트 템플릿 ([3], [4])에서 언제 어떻게 진행되는지 확인할 수 있습니다. 가능한 변수 $customer_list이보기 create 지금

public function actionCreate() 
{ 
    $customer_list = ArrayHelper::map(Customers::find() 
     ->orderBy(['last_name' => SORT_ASC]) 
     ->all(), 'id', 'fullName'); 

    return $this->render('create', [ 
     // ... 
     'customer_list' => $customer_list 
    ]); 
} 

: 모든

먼저, 당신이 좋아하는 볼 컨트롤러에서 직접 전달할 수 있기 때문에 $this->view->params를 사용하여 변수를 전달 할 필요가 없습니다. $this->view->params을 사용하는 것도 효과가 있지만보기간에 변수를 전달하는 것이 좋습니다. 드롭 다운에 관해서는

<?= $form->field($model, 'customer_id')->dropDownList($customer_list, ['prompt' => '-Choose a Customer-']) ?> 

:

활동 범위가 지정된 옵션 항목 중 하나가 (이 'customer_id'있어이 경우) $model의 속성의 값과 일치 할 때 선택한 값을 표시하도록 설계 dropDownList() 방법 때문에 모두를 해야 할 일은이 속성을 설정하는 것입니다.

public function actionUpdate($id) 
{ 
    $model = Jobs::findOne($id); // $id is primary key in the DB table for Jobs model 

    // operations on $model here 

    $customer_list = ArrayHelper::map(Customers::find() 
     ->orderBy(['last_name' => SORT_ASC]) 
     ->all(), 'id', 'fullName'); 

    return $this->render('update', [ 
     'model' => $model, 
     'customer_list' => $customer_list 
    ]); 
} 

지금보기 dropDownList()에 대해 동일한 코드와 'customer_id'$model에 저장된 값으로 선택 : Jobs 만약

는 액티브 액션의 인스턴스가 그런 일을 볼 수 있습니다. (있는 경우

public function actionUpdate() 
{ 
    $model = new Jobs(); 
    $model->customer_id = 1; // example 

    // operations on $model here 

    $customer_list = ArrayHelper::map(Customers::find() 
     ->orderBy(['last_name' => SORT_ASC]) 
     ->all(), 'id', 'fullName'); 

    return $this->render('update', [ 
     'model' => $model, 
     'customer_list' => $customer_list 
    ]); 
} 

지금보기에 dropDownList()에 대해 동일한 코드가 하나의 값을 선택 'customer_id'를 보여줍니다 Jobs 만약

당신뿐만 아니라 당신의 선택의 'customer_id'를 전달할 수 양식 모델의 인스턴스 그 값의 항목이 있습니다).

+0

먼저 컨트롤러에서 제공하는 변수를 대안으로 제공 한 방법을 사용하여 뷰에 전달할 수 없습니다. $ this-> view-> params [ 'customer_list'] 메소드를 사용하기 때문에 큰 문제는 아닙니다. 선택된 항목을 표시하기 위해 제공 한 예제는 $ model-> customer_id = 1입니다. 그러나 원하는 것은 작업 테이블의 현재 레코드에서 customer_id가 선택된 것입니다. 그걸하는 법을 보여 주실 수 있습니까? 감사. – user1556325

+0

위의 내용을 무시하십시오. 나는 이것을 알아 냈다. 업데이트시 양식은 테이블의 값을 선택한 항목으로 자동 표시합니다. 해야 할 일이 없습니다. – user1556325