কিভাবে একটি করতে 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 এ অ্যারেহেল্পার 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')
উপর ভিত্তি করে দ্বিতীয় ক্ষেত্রটি স্থাপনের জন্য জিকিউরিতে ইভেন্টটি হেরফের করা ।
উপরে কয়েকটি ভাল সমাধান রয়েছে, এবং আমার দুটি মাত্রের সংমিশ্রণ (আমি এখানে সমাধানের সন্ধান করতে এসেছি)।
@ সরবর নিশনবয়েভের সমাধানটি ভাল কারণ এটি ত্রুটির বার্তাগুলির জন্য ফর্ম ইনপুট লেবেল এবং সহায়তা-ব্লক তৈরি রক্ষণ করে।
আমি সঙ্গে গিয়েছিলাম:
<?php
use yii\helpers\ArrayHelper;
use app\models\Product;
?>
<?=
$form->field($model, 'parent_id')
->dropDownList(
ArrayHelper::map(Product::find()->asArray()->all(), 'parent_id', 'name')
)
?>
আবার, সম্পূর্ণ কৃতিত্ব: @ সরবর নিশোনবয়েভ এবং @ পিপি
দেখে মনে হচ্ছে এই প্রশ্নের অনেক ভাল উত্তর আছে। সুতরাং আমি একটি বিস্তারিত উত্তর দেওয়ার চেষ্টা করব
সক্রিয় ফর্ম এবং হার্ডকোডড ডেটা
<?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']);
?>
সক্রিয় ফর্ম এবং একটি ডিবি টেবিল থেকে ডেটা
আমরা অ্যারেহেল্পারটি ব্যবহার করতে যাচ্ছি তাই প্রথমে এটির মাধ্যমে নামের জায়গাতে যুক্ত করুন
<?php
use yii\helpers\ArrayHelper;
?>
অ্যারেহেল্পারের অনেকগুলি ব্যবহারের সম্পূর্ণ ফাংশন রয়েছে যা অ্যারে ম্যাপটি প্রসেস করতে ব্যবহৃত হতে পারে () আমরা এখানে এই ফাংশনটি ব্যবহার করতে যাচ্ছি একটি বহুমাত্রিক অ্যারে বা বস্তুর একটি অ্যারে থেকে একটি মানচিত্র (কী-মান জোড়ার) তৈরি করতে সহায়তা করুন।
<?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) ;
?>
কোনও সক্রিয় ফর্ম নয় তবে একটি ডিবি টেবিলের ডেটা
<?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-']) ?>
হতে পারে আমি ভুল কিন্তু আমি মনে করি ভিউ থেকে এসকিউএল কোয়েরিটি একটি খারাপ ধারণা
এটা আমার পথ
নিয়ামক মধ্যে
$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) ?>
অথবা অ্যাক্টিভর্ম ব্যবহার করে
<?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]);?>
<?= $form->field($model, 'attribute_name')->dropDownList(
ArrayHelper::map(Table_name::find()->all(),'id','field_name'),
['prompt' => 'Select']
) ?>
এটি আপনাকে সাহায্য করবে ... ক্লাস ফাইলটি হেডারে ব্যবহার করতে ভুলবেন না।
use yii\helpers\ArrayHelper;
সহায়কটি ব্যবহার করতে সক্ষম হতে একজনকে লিখতে হবে।
এটি ডেটা উত্পন্ন করার বিষয়ে, এবং মডেল থেকে আরও সঠিকভাবে সম্পন্ন করা হয়। কল্পনা করুন আপনি যদি কখনও ড্রপ-ডাউন বাক্সে ডেটা প্রদর্শিত হওয়ার উপায়টি পরিবর্তন করতে চান তবে একটি উপাধি বা কিছু যুক্ত করুন বলুন। আপনাকে প্রতিটি ড্রপ-ডাউন বাক্স খুঁজে পেতে এবং এটি পরিবর্তন করতে হবে arrayHelper
। ড্রপডাউনের জন্য ডেটা ফেরত দেওয়ার জন্য আমি আমার মডেলগুলিতে একটি ফাংশন ব্যবহার করি, সুতরাং আমাকে ভিউগুলিতে কোডটি পুনরাবৃত্তি করতে হবে না। এটিরও সুবিধা রয়েছে যে আমি এখানে ফিল্টার নির্দিষ্ট করতে পারি এবং তাদের এই মডেল থেকে তৈরি প্রতিটি ড্রপডাউন প্রয়োগ করতে পারি;
/* Model Standard.php */
public function getDropdown(){
return ArrayHelper::map(self::find()->all(), 's_id', 'name'));
}
আপনি এটিকে আপনার ভিউ ফাইলটিতে এটি ব্যবহার করতে পারেন;
echo $form->field($model, 'attribute')
->dropDownList(
$model->dropDown
);
আপনি যদি এটি তালিকার নীচে তৈরি করে থাকেন। কিছু পিএইচপি কোড সংরক্ষণ করুন এবং আপনার যেমন প্রয়োজন তেমন সমস্ত কিছুই ডিবি থেকে ফিরিয়ে আনুন:
$items = Standard::find()->select(['name'])->indexBy('s_id')->column();
এইচটিএমএল :: অ্যাক্টিভড্রপডাউনলিস্ট ($ মডেল, 'আইডি', অ্যারেহেল্পার :: মানচিত্র (উপস্থিতি লেবেল :: সন্ধান করুন) (> সমস্ত (), 'আইডি', 'লেবেল নাম'), ['প্রম্পট' => 'উপস্থিতির স্থিতি'])) ;
নিম্নলিখিতগুলিও করা যেতে পারে। আপনি যদি প্রিপেন্ড আইকন যোগ করতে চান। এটি সহায়ক হবে।
<?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();?>