Ошибка в выпадающем списке Yii для добавления ссылки - PullRequest
0 голосов
/ 02 апреля 2012

Я новичок в красивой Yii Framework. Я просматривал вики-документы по Yii. Я получил ссылку http://www.yiiframework.com/wiki/72/cjuidialog-and-ajaxsubmitbutton?, где я получил что-то, что мне было нужно. Так что я сделал весь процесс как учебник.Но по-прежнему я не могу сохранить имя_объекта из файла представления лица.

Моя база данных была такой

 ==== Job ====
  id
  job_name
  job_description
  created_at
  updated_at

  ==== Person ====
  id
  job_id
  person_name
  description
  created_at
  updated_at

Моя _form.php для Персона была такой

 <?php echo $form->errorSummary($model); ?>
  <div class="row">
  <div id="job">
  <?php echo $form->dropDownList($model,'job_id',CHtml::listData(Job::model()->findAll(),'job_id','description'),array('prompt'=>'Select')); ?>
  <?php echo CHtml::ajaxLink(Yii::t('job','Create Job'),$this->createUrl('job/addnew'),array(
  'onclick'=>'$("#jobDialog").dialog("open"); return false;',
  'update'=>'#jobDialog'
  ),array('id'=>'showJobDialog'));?>
  <div id="jobDialog"></div>
  </div>
  </div>

И actionAddnew () в контроллере заданий выглядит следующим образом

public function actionAddnew()
  {
    $model=new Job;
    // Ajax Validation enabled
    $this->performAjaxValidation($model);
    // Flag to know if we will render the form or try to add 
    // new jon.
    $flag=true;
    if(isset($_POST['Job']))
    {
      $flag=false;
      $model->attributes=$_POST['Job'];
      if($model->save()) 
      {
        //Return an <option> and select it
        echo CHtml::tag('option',array ('value'=>$model->jid,'selected'=>true),CHtml::encode($model->jdescr),true);
      }
     }
      if($flag) 
      {
        Yii::app()->clientScript->scriptMap['jquery.js'] = false;
        $this->renderPartial('createDialog',array('model'=>$model,),false,true);
      }
  }

В соответствии с руководством я создал еще два файла с именами createDialog.php и _formDialog.php в папке просмотра заданий.Код для createDialog.php такой:

<?php 
  $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
  'id'=>'jobDialog',
  'options'=>array(
  'title'=>Yii::t('job','Create Job'),
  'autoOpen'=>true,
  'modal'=>'true',
  'width'=>'auto',
  'height'=>'auto',
  ),
  ));
  echo $this->renderPartial('_formDialog', array('model'=>$model)); ?>
  <?php $this->endWidget('zii.widgets.jui.CJuiDialog');?>

Код для _formDialog.php такой:

 <div class="form" id="jobDialogForm">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'job-form',
    'enableAjaxValidation'=>true,
)); 
//I have enableAjaxValidation set to true so i can validate on the fly the
?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'jid'); ?>
        <?php echo $form->textField($model,'jid',array('size'=>60,'maxlength'=>90)); ?>
        <?php echo $form->error($model,'jid'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'jdescr'); ?>
        <?php echo $form->textField($model,'jdescr',array('size'=>60,'maxlength'=>180)); ?>
        <?php echo $form->error($model,'jdescr'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::ajaxSubmitButton(Yii::t('job','Create Job'),CHtml::normalizeUrl(array('job/addnew','render'=>false)),array('success'=>'js: function(data) {
                        $("#Person_jid").append(data);
                        $("#jobDialog").dialog("close");
                    }'),array('id'=>'closeJobDialog')); ?>
    </div>

<?php $this->endWidget(); ?>

</div>

Так в чем я не прав? Любая помощь и предложения будутвесьма заметно.

1 Ответ

0 голосов
/ 06 апреля 2012

Добавьте следующее к вашей Job модели:

public function rules() {
  return array(
    ...
    array('job_name', 'safe'),
    ...
  );
}
...