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 Nishonboyev 및 @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;
?>
ArrayHelper는 배열을 처리하는 데 사용할 수있는 전체 함수를 많이 사용합니다. map ()은 여기서 사용할 것입니다.이 함수는 다차원 배열 또는 객체 배열에서 맵 (키-값 쌍)을 만드는 데 도움이됩니다.
<?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) ?>
또는 ActiveForm 사용
<?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')
?>
This is about generating data, and so is more properly done from the model. Imagine if you ever wanted to change the way data is displayed in the drop-down box, say add a surname or something. You'd have to find every drop-down box and change the arrayHelper
. I use a function in my models to return the data for a dropdown, so I don't have to repeat code in views. It also has the advantage that I can specify filter here and have them apply to every dropdown created from this model;
/* Model Standard.php */
public function getDropdown(){
return ArrayHelper::map(self::find()->all(), 's_id', 'name'));
}
You can use this in your view file like this;
echo $form->field($model, 'attribute')
->dropDownList(
$model->dropDown
);
If you made it to the bottom of the list. Save some php code and just bring everything back from the DB as you need like this:
$items = Standard::find()->select(['name'])->indexBy('s_id')->column();
Following can also be done. If you want to append prepend icon. This will be helpful.
<?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
'program story' 카테고리의 다른 글
Chart.js를 사용하여 도넛 차트 내부에 텍스트를 추가하는 방법은 무엇입니까? (0) | 2020.10.06 |
---|---|
Socket.IO 1.0의 특정 ID로 메시지 보내기 (0) | 2020.10.06 |
Android에서 밀리 초를 날짜 형식으로 변환하는 방법은 무엇입니까? (0) | 2020.10.06 |
인터뷰 질문 : 새 노드를 만들지 않고 정렬 된 두 개의 단일 연결 목록 병합 (0) | 2020.10.06 |
Windows의 Node.js-콘솔을 지우는 방법 (0) | 2020.10.06 |