Вопрос по форме!

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
IvanChe
Сообщения: 89
Зарегистрирован: 2012.11.25, 18:55

Вопрос по форме!

Сообщение IvanChe »

Доброго всем дня !
Есть форма _form.php:

Код: Выделить всё

<?php Yii::app()->clientScript->registerScript('tabs',"
  $('a[code=\"addAttr\"]').live('click',function(){
    var countAttr = $('input[name^=\"Attribute\"]').length;
    $('div.form[code=\"productForm-attributes\"] div.row.buttons').before('
<div class=\"row\">
  <label for=\"Attribute_'+(countAttr)+'_name\" class=\"required\">Имя атрибута <span class=\"required\">*</span></label>
  <input name=\"Attribute['+(countAttr)+'][name]\" id=\"Attribute_'+(countAttr)+'_name\" type=\"text\" maxlength=\"255\">
</div>
<div class=\"row\">
  <label for=\"Attribute_'+(countAttr)+'_text\" class=\"required\">Текст <span class=\"required\">*</span></label>
  <textarea name=\"Attribute['+(countAttr)+'][text]\" id=\"Attribute_'+(countAttr)+'_text\"></textarea>
</div>');
  });
",CClientScript::POS_READY) ?>
<div code="productForm-main" class="form">
  <?php $form=$this->beginWidget('CActiveForm', array(
      'id'=>'product-form',
      'enableAjaxValidation'=>false,
    'htmlOptions' => array('enctype' => 'multipart/form-data'),
  )); ?>
  
      <?php echo $form->errorSummary(array($model,$modelAttributes)); ?>
  
      <div class="row">
          <?php echo $form->labelEx($model,'title'); ?>
          <?php echo $form->textField($model,'title',array('size'=>60,'maxlength'=>255)); ?>
          <?php echo $form->error($model,'title'); ?>
      </div>  

</div><!-- main -->

<div code="productForm-attributes" class="form">
    <div><a code="addAttr" href="#attributes">Добавить атрибут</a></div>
    <?php  ?>
    <div class="row">
        <?php echo $form->labelEx($modelAttributes,'[0]name'); ?>
        <?php echo $form->textField($modelAttributes,'[0]name'); ?>
        <?php echo $form->error($modelAttributes,'[0]name'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($modelAttributes,'[0]text'); ?>
        <?php echo $form->textArea($modelAttributes,'[0]text'); ?>
        <?php echo $form->error($modelAttributes,'[0]text'); ?>
    </div>
  
    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Создать' : 'Сохранить'); ?>
    </div>
</div><!-- attributes -->
    
<?php $this->endWidget(); ?>
Думаю суть понятна, что есть 2 поля - Название атрибута и Описание, которые сразу добавлены в форму, и точно такие же создаются динамически ЯваСкриптом.
В действии create $modelAttributes = new Attribute(); т.е. является просто экземпляром класса модели.
Проблема в том, что при сабмите формы в массив $_POST попадают только данные полей атрибутов, которые были в файле _form, а те, что добавлялись динамически ЯваСкриптом вообще никак не учитываются. Может кто-нибудь объяснить что я не так понимаю и соответственно не так делаю ?
Заранее благодарен за ответы ! :)
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопрос по форме!

Сообщение Nafania »

Должны туда приходить. Делайте var_dump($_POST) и смотрите, что приходит.
alekso
Сообщения: 190
Зарегистрирован: 2012.09.15, 23:49

Re: Вопрос по форме!

Сообщение alekso »

Посмотрите TabularInput с динамическим добавлением полей форм в руководстве\ yii вики.
Не добавляются потому что их нет в модели. Надо либо создать в вашей модели такие переменные(которые вы будете генерить скриптом) и добавить правила валидации для них(получите говнокод но должно работать) либо мудохатся с табулар инпут, имено мудохатся потому что там не так все просто:)
Ответить