AjaxInput ¶
Component to the insert and update a model several times on a form, ideal when you have a relationship HAS-MANY relationship between models.
Requirements ¶
- Yii 1.x
- Bootstrap 3.x (Used in the example View)
Usage ¶
1) Extract content in your extensions directory
2) Add in the actions of the controller, the action (ext.ajaxInput.AddItemAction) that adds a new view of model: ~~~ public function actions() { ... 'addItem' => 'ext.ajaxInput.AddItemAction', ... } ~~~
3) Call the widget in your create/update view, inside your form: ~~~ // Button for add a new model echo CHtml::link('Add new model', null, array(
'class' => 'btn btn-info addItem',
'model' => 'TestModel',
'view' => '_testForm'
));
// Listing of the model views $this->widget('ext.ajaxInput.AjaxInputWidget', array(
'modelClass' => 'TestModel',
'view' => '_testForm',
'ajaxUrl' => $this->createUrl('addItem'),
// 'items' => $items // Only for update, this contain a array of the models
)); ~~~
4) Example recommended of your view (_testForm): ~~~
class="col-xs-12 col-sm-6 col-md-4"><div class="panel panel-default">
<div class="panel-heading">
<div span class="label label-success">
Nº <span numberItem="<?php echo get_class($model); ?>"></span>
</div>
<?php echo CHtml::link('×', '#', array(
'class'=> 'close removeItem',
'tabindex' => '-1',
'onclick' => "removeItem('" . get_class($model) . "', {$index});"
)); ?>
</div>
<?php if (isset($model['id'])): ?>
<?php echo CHtml::activeHiddenField($model, '[' . $index . ']id'); ?>
<?php endif; ?>
<div class="panel-body">
<div class="form-group">
<?php echo CHtml::activeLabelEx($model, '[' . $index . ']name', array('class' => 'control-label')); ?>
<?php echo CHtml::activeTextField($model, '[' . $index . ']name', array('class' => 'form-control input-sm', 'maxlength' => 20)); ?>
<?php echo CHtml::error($model, '[' . $index . ']name', array('class' => 'control-error')); ?>
</div>
</div>
</div>
~~~
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.