PDA

View Full Version : validate برای فیلدی که مقدار از چند dropdown میگیرد -- yii2



desatir7316
سه شنبه 15 اردیبهشت 1394, 12:25 عصر
سلام دوستان
یه فیلد required دارم مقدارشو از چند تا dropbox می گیره و حد اقل باید یکی از این dropbox ها انتخاب شده باشه
اسم همه dropbox ها رو برابر نام فیلد دادم ولی ولیدت رو فقط روی dropbox اولی انجام می ده
ممنون می شم راهنمایی کنید.

model:


class Ads extends ActiveRecord {
....
....
public $sub_categories;
public function rules() {
$rules = [
['sub_categories', 'required'],
......
......
];
return $rules;
}


view


.........
.......
<table style="table-layout: fixed;">
<?php
$categories = Category::find()->all();
for($index = -1; $index < count($categories) - 1; ):?>
<tr>
<?php $index++; if(isset($categories[$index])): ?>
<td><?php echo $form->field($model, 'sub_categories')->dropDownList(ArrayHelper::map($categories[$index]->subCategories, 'id', 'title'), ['prompt' => $categories[$index]->name]);?></td>
<?php endif; ?>
<?php $index++; if(isset($categories[$index])): ?>
<td><?php echo $form->field($model, 'sub_categories')->dropDownList(ArrayHelper::map($categories[$index]->subCategories, 'id', 'title'), ['prompt' => $categories[$index]->name]);?></td>
<?php endif; ?>
<?php $index++; if(isset($categories[$index])): ?>
<td><?php echo $form->field($model, 'sub_categories')->dropDownList(ArrayHelper::map($categories[$index]->subCategories, 'id', 'title'), ['prompt' => $categories[$index]->name]);?></td>
<?php endif; ?>
</tr>
<?php endfor; ?>
</table>
......
.......


ممنون می شم راهنمایی کنید

mostafa_shoakry
چهارشنبه 16 اردیبهشت 1394, 20:23 عصر
منم تازه کارم ، ولی تا اونجا که می دونم تمام dropdown شما همشون اسمش sub_categories هست . پس validation از لحاظ منطقی درست کار میکنه . درضمن منطق if شما یکم گنگه برا من :لبخند:

desatir7316
پنج شنبه 17 اردیبهشت 1394, 01:07 صبح
برای validate فعلا به صورت موفق از سمت سرور چک کردم و با addError کنترل کردم
اون if ها هم برای ایجاد تیبل مناسب بوده و اینکه تعداد دسته ها چون متغیره و مثلا اگه تعداد if ها ۳ تاست، تعداد دسته ها حتما ضریبی از ۳ نیست، به خاطر همین با if چک کردم