및 모델 dropdown
을 yii2
사용하여 만드는 방법은 activeform
무엇입니까? 에서 모든 방법이 변경 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();
?>
.on('change')
jquery에서 이벤트를 조작하여 첫 번째 선택을 기반으로 두 번째 필드를 채우는 것입니다.
위의 몇 가지 좋은 솔루션이 있으며 내 것은 두 가지의 조합 일뿐입니다 (솔루션을 찾고 여기에 왔습니다).
@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(); ?>
$this->view->params['items'] = $items;
하고 내보기 페이지에서<?php echo $form->field($model, 'plan_type', ['options' => ['class' => ' input select']])->dropdownList( $this->params['items'],['prompt'=>'Select Plan','class' => 'selectpicker', 'data-live-search' => 'true','label'=>false]);?>
이것은 데이터 생성에 관한 것이며 모델에서 더 적절하게 수행됩니다. 드롭 다운 상자에 데이터가 표시되는 방식을 변경하고 싶었다고 상상해보십시오. 모든 드롭 다운 상자를 찾아서 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 $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();?>