在Yii2中创建相关下拉列表
这是Yii2中的两个活动表单字段在Yii2中创建相关下拉列表,yii2,dropdown,Yii2,Dropdown,这是Yii2中的两个活动表单字段 <?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen']) ?> <?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes']) ?> 单击屏幕时,第二个字段应更改为“是”
<?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen']) ?>
<?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes']) ?>
单击屏幕时,第二个字段应更改为“是”。单击模块时,应将其更改为“否”。我只需将0或1保存到数据库中
如何实现这一点?好吧,您需要使用javascript/jquery将更改事件绑定到第一个下拉列表,如下所示。在视图顶部添加脚本,并为两个下拉列表提供id
$this->registerScript("
$('#navigation_type').on('change',function(){
if($(this).val() == 'Module'){
$('#showInUrl').val(0);
}else{
$('#showInUrl').val(1);
}
});",\yii\web\View::POS_END);
<?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen'],['id'=>'navigation_type']) ?>
<?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes'],['id'=>'showInUrl' ])?>
除了上述解决方案外,您还应该研究哪些方法会减少您的工作
一个最大值,您只需要集成,它工作得很好。好的,您需要使用javascript/jquery将更改事件绑定到第一个下拉列表,如下所示。在视图顶部添加脚本,并为两个下拉列表提供id
$this->registerScript("
$('#navigation_type').on('change',function(){
if($(this).val() == 'Module'){
$('#showInUrl').val(0);
}else{
$('#showInUrl').val(1);
}
});",\yii\web\View::POS_END);
<?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen'],['id'=>'navigation_type']) ?>
<?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes'],['id'=>'showInUrl' ])?>
Using Kartik/select Dropdown You Can Code like These :
<div class="navigation-form">
<?= $form->field($model, 'navigation_type')
->widget(kartik\select2\Select2::className(), [
'data' => ['Module'=>'Module','Screen'=>'Screen'],
'options' => ['multiple' => false],
'pluginOptions' => [
'placeholder' => 'Select Module',
],
])
?>
<?= $form->field($model, 'showInUrl')->widget(kartik\select2\Select2::className(),[
'data' => [0=>'No',1=>'Yes'],
'options' => ['multiple' => false],
'pluginOptions' => [
'placeholder' => 'ShoW URL',
],
]) ?>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#navigation-navigation_type').on("change",function(e){
var sel_val = $(this).select2("val");
if(sel_val=='Screen'){
$('[name="navigation[showInUrl]"]').val('Yes').trigger('change');
}
if(sel_val=='Module'){
$('[name="navigation[showInUrl]"]').val('No').trigger('change');
}
});
除了上述解决方案外,您还应该研究哪些方法会减少您的工作
一个最大值,您只需要集成,它工作得很好。它会在db中存储0,1表示“否”、“是”吗?您需要将showInUrl下拉列表的值更改为0和1,而不是“是”和“否”,以便执行此操作@初学者开发人员我编辑了脚本请参见现在我重新绘制了$“showInUrl”.val“否”;使用$showInUrl.val0;和$'showInUrl'.val'Yes';使用$showInUrl.val1;您现在可以检查它是否正常工作它是否将0,1存储为数据库中的“否”、“是”?您需要将showInUrl下拉列表的值更改为0和1,而不是“是”和“否”,以便执行此操作@初学者开发我编辑了脚本请参见现在我重新绘制了$“showInUrl”.val“否”;使用$showInUrl.val0;和$'showInUrl'.val'Yes';使用$showInUrl.val1;您现在可以检查它是否能够正确地工作,因为依赖下拉列表kartik已经有了一个扩展select2的独立插件,如果你最终不得不手动选择下拉列表,那么使用select2而不是dependent下拉列表有什么意义?就像简单的dependent下拉列表一样kartik已经有了一个扩展select2的独立插件,如果你最终不得不像一个简单的下拉列表那样手动选择下拉列表,那么使用select2而不是dependent下拉列表有什么意义
Using Kartik/select Dropdown You Can Code like These :
<div class="navigation-form">
<?= $form->field($model, 'navigation_type')
->widget(kartik\select2\Select2::className(), [
'data' => ['Module'=>'Module','Screen'=>'Screen'],
'options' => ['multiple' => false],
'pluginOptions' => [
'placeholder' => 'Select Module',
],
])
?>
<?= $form->field($model, 'showInUrl')->widget(kartik\select2\Select2::className(),[
'data' => [0=>'No',1=>'Yes'],
'options' => ['multiple' => false],
'pluginOptions' => [
'placeholder' => 'ShoW URL',
],
]) ?>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#navigation-navigation_type').on("change",function(e){
var sel_val = $(this).select2("val");
if(sel_val=='Screen'){
$('[name="navigation[showInUrl]"]').val('Yes').trigger('change');
}
if(sel_val=='Module'){
$('[name="navigation[showInUrl]"]').val('No').trigger('change');
}
});