2014-03-31 30 views
0

我在我的项目中有一个视图部分,并且使用CGridView列出表格中的所有数据,在网格中也有编辑和删除选项来编辑和删除特定行。编辑yii中的特定记录

我坚持section.I我如何获得editjob.php dispalyed特定行数据工作的编辑,我已经做了一些事情,但没有use.My代码如下,

在使用CgridView我认为工作部分,

'buttons' =>array('update'=>array(

    'label'=>'edit', 
    'url'=>'Yii::app()->controller->createUrl("UpdateJob",array("id"=>$data["id"]))', 

    )) 

在型号UpdateJob:

public function edit() 
{ 

$criteria=new CDbCriteria; 

$criteria->find('id','Admin',true); 

return new CActiveDataProvider('viewjob', array(
    'criteria'=>$criteria, 
    // 'sort'=>array(
     // 'defaultOrder'=>'key_skills ASC', 
    //), 
)); 
在控制器

public function actionUpdateJob() 
{ 

    if(isset($_GET['id'])) 
    { 
     $id=$_GET['id']; 
    } 

    $model = new UpdateJob('edit'); 
    $params = array('model' => $model,'id' => $id //passing the id like this 
    ); 



    $this->render('update', $params); 
} 

而且finaly鉴于书面类似,但显示错误

<div class="row"> 
     <?php echo $form->labelEx($model,'Company Name'); ?> 
     <?php echo Chtml::textField('posted_by',UpdateJob::model()->FindByPk($model->id)->posted_by); ?> 
     <?php echo $form->error($model,'posted_by'); ?> 
    </div> 

我是在正确的轨道。

回答

0

您正在加载新的模型而不是提取现有的模型。替换此行:

$model = new UpdateJob('edit'); 

通过这条线:

$model = UpdateJob::model()->findByPk($id); 

要保存你这样做的数据:

if(isset($_POST['UpdateJob'])) { 
    $model->scenario='edit'; 
    $model->attributes=$_POST['UpdateJob']; 
    if($model->save()) 
     $this->redirect(array('admin'); 
} 
+0

感谢米歇尔,......我应该怎么显示particiular记录在编辑表单中,就像我希望所有与id ='1'相对应的数据一样,我应该如何实现该功能。 – saji

+0

确保“findByPk”的第一个参数包含您正在尝试编辑的记录的ID。 – Michiel

+0

以及视图部分是什么......它是显示数据的正确方法。 – saji