Всем доброго времени суток
Есть таблица:
CREATE TABLE `goods_variations` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`goods_id` INT(10) UNSIGNED NOT NULL,
`articul` VARCHAR(100) NULL DEFAULT NULL,
`size` VARCHAR(100) NULL DEFAULT NULL,
`color` VARCHAR(100) NULL DEFAULT NULL,
`weight` VARCHAR(100) NULL DEFAULT NULL,
`stock` INT(5) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK_goods_options_goods` (`goods_id`),
INDEX `articul` (`articul`),
К ней стандартная форма
Текущий контроллер
public function actionVariations($id) {
if (Yii::app()->request->isAjaxRequest) {
$this->layout = 'blank';
$goods = Goods::model()->findByPk($id);
$variations = GoodsVariations::model()->findAll(array('condition'=>'goods_id='.$id));
if (isset($_REQUEST['GoodsVariations'])) {
foreach ($_REQUEST['GoodsVariations'] as $values) {
$variation = new GoodsVariations;
$values['goods_id'] = $goods->id;
$variation->attributes = $values;
$variation->save();
print_r($_REQUEST);
}
}
$this->render('_variations',array('variations'=>$variations, 'goods'=>$goods));
} else {
throw new CHttpException('403', 'Forbidden access.');
}
Yii::app()->end();
}
Генератор формы
<table class="table table-bordered">
<thead>
<tr>
<th>Артикул</th>
<th>Размер</th>
<th>Цвет</th>
<th>Вес</th>
<th>Количество</th>
</tr>
</thead>
<tbody>
<?php
$i=0;
foreach ($variations as $variation) {
echo '<tr>';
echo '<td>'.CHtml::activeTextField($variation,'['.$i.']articul',array('size'=>12,'class'=>'form-control')).'</td>';
echo '<td>'.CHtml::activeTextField($variation,'['.$i.']size',array('size'=>12,'class'=>'form-control')).'</td>';
echo '<td>'.CHtml::activeTextField($variation,'['.$i.']color',array('size'=>12,'class'=>'form-control')).'</td>';
echo '<td>'.CHtml::activeTextField($variation,'['.$i.']weight',array('size'=>12,'class'=>'form-control')).'</td>';
echo '<td>'.CHtml::activeTextField($variation,'['.$i.']stock',array('size'=>12,'class'=>'form-control')).'</td>';
echo '</tr>';
$i++;
}
?>
<tr>
<?php echo '<td>'.CHtml::textField('GoodsVariations['.$i.'][articul]','',array('size'=>12,'class'=>'form-control')).'</td>'; ?>
<?php echo '<td>'.CHtml::textField('GoodsVariations['.$i.'][size]','',array('size'=>12,'class'=>'form-control')).'</td>'; ?>
<?php echo '<td>'.CHtml::textField('GoodsVariations['.$i.'][color]','',array('size'=>12,'class'=>'form-control')).'</td>'; ?>
<?php echo '<td>'.CHtml::textField('GoodsVariations['.$i.'][weight]','',array('size'=>12,'class'=>'form-control')).'</td>'; ?>
<?php echo '<td>'.CHtml::textField('GoodsVariations['.$i.'][stock]','',array('size'=>12,'class'=>'form-control')).'</td>'; ?>
</tr>
</tbody>
</table>
Как можно пробежаться по каждой строке с набором полей и провести валидацию с выводом ошибок в форму. В идеале еще и проверить если есть данные в базе (на картинке уже есть строка) то UPDATE если данных нету то INSERT.