2012-04-02 3 views
-1

Ich bin Neuling auf die schöne Yii Framework.Ich ging durch die Wiki-Dokumentation von Yii.Ich habe einen Link http://www.yiiframework.com/wiki/72/cjuidialog-and-ajaxsubmitbutton?, wo ich etwas, das ich brauchte.So machte ich den Prozess wie Das tutorial.Andernfalls kann ich den job_name aus der Person View-Datei speichern.Fehler in Yii Drop-Down-Link Option

Meine Datenbank war wie diese

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

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

Meine _form.php für Person war wie diese

<?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> 

Und die actionAddnew() in Job-Steuerung ist wie folgt

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); 
     } 
    } 

Laut Tutorial habe ich zwei weitere Dateien namens createDialog.php und _formDialog.php in der Jobansicht erstellt r. Der Code für createDialog.php wie dieser ist

<?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');?> 

Der Code für _formDialog.php ist wie diese

<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> 

Also, wo ich in dem falsch bin? Jede mögliche Hilfe und Anregungen sehr spürbar sein.

+0

Ihre Frage so schrecklich weit gefasst ist, dass es nicht beantwortet werden können. Was bedeutet "kein Erfolg"? Sei genauer. * Weg * spezifischer. – Jon

+0

Ich habe die Frage aktualisiert.So möchte ich den Jobnamen aus der Personenmodell-Ansichtsdatei mit dem Ajax-Link speichern, der oben über den Link beschrieben wurde. – NewUser

Antwort

0

Fügen Sie folgendes zu Ihrem Job Modell:

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