programing

yii2에서 드롭다운 목록을 만드는 방법

minecode 2022. 10. 1. 14:10
반응형

yii2에서 드롭다운 목록을 만드는 방법

★★★★★의 작성 dropdownyii2activeform모델은요?의 모든 방법이 변경되었기 때문에yii2로운 것것 ?떻 떻? ???

마치

<?php
use yii\helpers\ArrayHelper;
use backend\models\Standard;
?>

<?= Html::activeDropDownList($model, 's_id',
      ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?>

Yii2의 ArrayHelper는 Yii 1.1의 CHtml 목록 데이터를 대체합니다.[컨트롤러에서 어레이 데이터를 로드해 주세요]

편집

컨트롤러에서 데이터를 로드합니다.

컨트롤러

$items = ArrayHelper::map(Standard::find()->all(), 's_id', 'name');
...
return $this->render('your_view',['model'=>$model, 'items'=>$items]);

표시중

<?= Html::activeDropDownList($model, 's_id',$items) ?>

이미 답을 찾은 것 같습니다만, 액티브 폼을 언급하신 이상, 조금 차이가 나더라도 하나 더 추가하겠습니다.

<?php
    $form = ActiveForm::begin();

    echo $form->field($model, 'attribute')
        ->dropDownList(
            $items,           // Flat array ('id'=>'label')
            ['prompt'=>'']    // options
        );

    ActiveForm::end();
?>

위의 몇 가지 좋은 솔루션이 있습니다.저희 솔루션은 두 가지 조합입니다(솔루션을 찾고 있습니다).

@Sarvar Nishonboyev의 솔루션은 폼 입력 라벨과 오류 메시지에 대한 도움말 블록을 계속 생성하기 때문에 좋습니다.

나는 다음과 같이 했다.

<?php
use yii\helpers\ArrayHelper;
use app\models\Product;
?>
<?=
$form->field($model, 'parent_id')
     ->dropDownList(
            ArrayHelper::map(Product::find()->asArray()->all(), 'parent_id', 'name')
            )
?>

다시 한 번, @Sarvar Nishonboev's and @ippi에게 모든 신용을 부여합니다.

이 질문에는 좋은 답이 많은 것 같다.그래서 제가 자세한 답변을 드리도록 하겠습니다.

활성 형식 및 하드코드된 데이터

<?php
    echo $form->field($model, 'name')->dropDownList(['1' => 'Yes', '0' => 'No'],['prompt'=>'Select Option']);
?>

또는

<?php
    $a= ['1' => 'Yes', '0' => 'No'];
    echo $form->field($model, 'name')->dropDownList($a,['prompt'=>'Select Option']);
?>

DB 테이블의 활성 형식 및 데이터

ArrayHelper를 사용하기 때문에 먼저 다음 네임스페이스에 추가합니다.

<?php
    use yii\helpers\ArrayHelper;
?>

Array Helper에는 어레이 맵 처리에 사용할 수 있는 풀 함수가 많이 있습니다().이 함수는 다차원 배열 또는 객체 배열에서 (키와 값의 쌍으로 구성된) 맵을 만드는 데 도움이 됩니다.

<?php
    echo $form->field($model, 'name')->dropDownList(ArrayHelper::map(User::find()->all(),'id','username'),['prompt'=>'Select User']);
?>

활성 형태의 일부가 아니다

<?php
    echo Html::activeDropDownList($model, 'filed_name',['1' => 'Yes', '0' => 'No']) ;
?>

또는

<?php
    $a= ['1' => 'Yes', '0' => 'No'];
    echo Html::activeDropDownList($model, 'filed_name',$a) ;
?>

활성 형식이 아닌 DB 테이블의 데이터

<?php
    echo Html::activeDropDownList($model, 'filed_name',ArrayHelper::map(User::find()->all(),'id','username'),['prompt'=>'Select User']);
?>

이것 좀 봐.

use yii\helpers\ArrayHelper; // load classes
use app\models\Course;
    .....
$dataList=ArrayHelper::map(Course::find()->asArray()->all(), 'id', 'name');
<?=$form->field($model, 'center_id')->dropDownList($dataList, 
         ['prompt'=>'-Choose a Course-']) ?>

내가 틀렸을 수도 있지만 SQL 쿼리는 잘못된 생각이라고 생각한다.

이게 내 방식이야

인컨트롤러

$model = new SomeModel();
$items=ArrayHelper::map(TableName::find()->all(),'id','name');


return $this->render('view',['model'=>$model, 'items'=>$items])

표시 내용

<?= Html::activeDropDownList($model, 'item_id',$items) ?>

또는 Active Form 사용

<?php $form = ActiveForm::begin(); ?>
 <?= $form->field($model, 'item_id')->dropDownList($items) ?>
<?php ActiveForm::end(); ?>
<?= $form->field($model, 'attribute_name')->dropDownList(
         ArrayHelper::map(Table_name::find()->all(),'id','field_name'),
        ['prompt' => 'Select']
) ?>

이게 도움이 될 거야...헤더에 클래스 파일을 사용하는 것을 잊지 말아 주세요.

★★ActiveForm★★★★★★★★★★★★★★★★★★:

<?=
    $form->field($model, 'state_id')
         ->dropDownList(['prompt' => '---- Select State ----'])
         ->label('State')
?>

이것은 데이터를 생성하는 것과 관련이 있으며, 모형에서 더 적절하게 수행됩니다.드롭다운 상자에 데이터가 표시되는 방식을 변경하고 싶다고 상상해 보십시오. 예를 들어, 성을 추가하거나 합니다.하셔야 arrayHelper를 반환하는 하기 때문에뷰에서 가 없습니다 모델에서는 드롭다운 데이터를 반환하는 기능을 사용하기 때문에 뷰에서 코드를 반복할 필요가 없습니다.여기서 필터를 지정하여 이 모델에서 작성된 모든 드롭다운에 적용할 수 있다는 이점도 있습니다.

/* Model Standard.php */

public function getDropdown(){
      return ArrayHelper::map(self::find()->all(), 's_id', 'name'));
}

이렇게 뷰 파일에서 사용할 수 있습니다.

echo $form->field($model, 'attribute')
        ->dropDownList(
            $model->dropDown
        );

만약 당신이 목록의 맨 아래까지 갔다면.몇 가지 php 코드를 저장하고 다음과 같이 DB에서 모든 것을 가져옵니다.

 $items = Standard::find()->select(['name'])->indexBy('s_id')->column();

Html::activeDropDownList($model, 'id', ArrayHelper::map(AttendanceLabel::find()->all(), 'id', 'label_name'), ['prompt'=>'Attendance Status']);

<?=$form->field($model, 'category_id')->dropdownList(
    \common\models\Category::find()
        ->select(['name', 'id'])
        ->indexBy('id')
        ->column(),
    ['prompt'=>'select category']
)?>

다음 작업도 가능합니다.프리펜드 아이콘을 추가할 경우.이게 도움이 될 거예요.

<?php $form = ActiveForm::begin();    
   echo $form->field($model, 'field')->begin();
     echo Html::activeLabel($model, 'field', ["class"=>"control-label col-md-4"]); ?>
       <div class="col-md-5">
          <?php echo Html::activeDropDownList($model, 'field', $array_list, ['class'=>'form-control']); ?>
          <p><i><small>Please select field</small></i>.</p>
          <?php echo Html::error($model, 'field', ['class'=>'help-block']); ?>
       </div>
   <?php echo $form->field($model, 'field')->end(); 
ActiveForm::end();?>

언급URL : https://stackoverflow.com/questions/21569053/how-to-make-a-drop-down-list-in-yii2

반응형