Добрый день,
В форме создания отеля , необходимо наполнить его номерами. Желательно, чтобы при добавлении каждого пункта номера, проходила клиентская валидация по содержимому его полей.
Есть 2 класса:
Hotels и
Rooms
1. В
relations у
Hotels:
'rooms' => [self::HAS_MANY, 'Rooms','hotel_id'],
2. В
rules у
Hotels:
[['rooms'],'safe']
3. В свойствах у
Hotels:
public $rooms;
4. В
_form.php для крудо в с отелями фрагмент:
<?php
$this->widget('ext.jqrelcopy.JQRelcopy',array(
//the id of the 'Copy' link in the view, see below.
'id' => 'add_room',
//add a icon image tag instead of the text
//leave empty to disable removing
'removeText' => 'Удалить',
//htmlOptions of the remove link
'removeHtmlOptions' => array('style'=>'color:red'),
//options of the plugin, see http://www.andresvidal.com/labs/relcopy.html
'options' => array(
//A class to attach to each copy
'copyClass'=>'newcopy',
// The number of allowed copies. Default: 0 is unlimited
'limit'=>5,
//Option to clear each copies text input fields or textarea
'clearInputs'=>true,
//A jQuery selector used to exclude an element and its children
'excludeSelector'=>'.skipcopy',
//Additional HTML to attach at the end of each copy.
'append'=>CHtml::tag('span',array('class'=>'hint'),'Вы можете удалить эту строку'),
)
));?>
<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
<?php echo $form->labelEx($model, 'rooms'); ?>
</button>
<div id="demo" class="collapse">
<div class="add-room">
<table class="table">
<tr>
<td>
<?php echo CHtml::label('Название',''); ?>
</td>
<td>
<?php echo CHtml::label('Кол-во комнат <span class="badge">шт.</span>',''); ?>
</td>
<td>
<?php echo CHtml::label('Стоимость от отеля <span class="badge">тг.</span>',''); ?>
</td>
<td>
<?php echo CHtml::label('Стоимость от фирмы <span class="badge">тг.</span>',''); ?>
</td>
<td>
<?php echo CHtml::label('Свободная продажа',''); ?>
</td>
<td>
<?php echo CHtml::label('Завтрак',''); ?>
</td>
<td>
<?php echo CHtml::label('Рацион',''); ?>
</td>
</tr>
<tr>
<td>
<?php echo CHtml::textField('Hotels[rooms][name][]',''); ?>
</td>
<td>
<?php echo CHtml::numberField('Hotels[rooms][beds_count][]', '',
[
'placeholder'=>'шт. '
]); ?>
</td>
<td>
<?php echo CHtml::numberField('Hotels[rooms][price][]', '',
[
'placeholder'=>'тг. '
]); ?>
</td>
<td>
<?php echo CHtml::numberField('Hotels[rooms][price_rr][]', '',
[
'placeholder'=>'тг. '
]
); ?>
</td>
<td>
<?php echo CHtml::checkBox('Hotels[rooms][is_freesale][]', ''); ?>
</td>
<td>
<?php echo CHtml::checkBox('Hotels[rooms][is_breakfast][]', ''); ?>
</td>
<td>
<?php echo CHtml::dropDownList('Hotels[rooms][food_id][]', '', CHtml::listData($food, 'id', 'name')); ?>
</td>
</tr>
</table>
</div>
<a id="add_room" href="#" class="btn btn-primary btn-lg" rel=".add-room">+</a>
</div>
Данный виджет нужен для добавления однородных сущностей, потом, когда
action подтягивает
$_POST связанные данные сохраняются куда нужно (
номера в свою таблицу).
Проблема в том, что валидация не подтягивается из класса
Rooms
Как это можно поправить?