2012-04-02 71 views
-1

我是美化Yii Framework的新手。我正在瀏覽Yii的wiki文檔。我得到了一個鏈接http://www.yiiframework.com/wiki/72/cjuidialog-and-ajaxsubmitbutton?,我得到了一些我需要的東西。所以我讓所有的過程都像本教程。但仍然無法從人員視圖文件中保存job_name。Yii下拉菜單中的錯誤添加鏈接選項

我的數據庫是這樣

==== 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作業查看folde河 爲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> 

那麼,我錯了,在這?任何幫助和建議將是非常可觀的。

+0

你的問題是這麼可怕廣泛,它不能回答。 「沒有取得任何成功」是什麼意思?更加詳細一些。 *方式*更具體。 – Jon 2012-04-03 09:40:12

+0

我已經更新了這個問題。順便說一下,我想用上面描述的鏈接的ajax鏈接從人員模型視圖文件中保存作業名稱。 – NewUser 2012-04-03 12:49:31

回答

0

以下內容添加到您的Job型號:

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