yii2에서 드롭다운 목록을 만드는 방법
★★★★★의 작성 dropdown
yii2
activeform
모델은요?의 모든 방법이 변경되었기 때문에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
'programing' 카테고리의 다른 글
InnoDB를 사용한 전문 검색 (0) | 2022.10.01 |
---|---|
PHP로 사용자 입력을 삭제하려면 어떻게 해야 합니까? (0) | 2022.10.01 |
메서드를 스태틱으로 선언함으로써 얻을 수 있는 이점은 무엇입니까? (0) | 2022.10.01 |
Java에서 현재 열려 있는 창/프로세스 목록을 가져오려면 어떻게 해야 합니까? (0) | 2022.10.01 |
SQL Update 문을 실행하기 전에 테스트하는 방법 (0) | 2022.10.01 |