无法使用yii框架编辑特定用户的数据

时间:2014-04-01 07:39:08

标签: php yii

我是yii框架的新手。我正在使用yii框架进行更新操作。我的控制器名称为sitecontroller.php,model jobseekerprofile.php,view personal.php。我无法通过表单发布来更新数据。

我的控制器是sitecontroller.php

<?php
class SiteController extends Controller
 {
 public function actionpersonal()
  {

    $user_id = trim($_GET['id']);
    $model = new jobseekerprofile();
    if(isset($_POST['jobseekerprofile']))
     {
        $model->attributes=$_POST['jobseekerprofile'];
        if($model->save())
           {
              $this->redirect(array('profile','user_id'=>$model->user_id));
           }   
    }

    $model=jobseekerprofile::model()->find(array(
                                         'select'=>'contact_no,address',"condition"=>"user_id=$user_id",
                                         'limit'=>1,));
    $this->render('personal',array('model' =>$model));
  }
}

&GT;

我的观点页面personal.php

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableClientValidation'=>true,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
    'clientOptions'=>array(
    'validateOnSubmit'=>true
),
 )); ?>

<?php
foreach(Yii::app()->user->getFlashes() as $key => $message) {
    echo '<div class="flash-' . $key . '">' . $message . "</div>\n";
}
 ?>

<p class="note">Fields with <span class="required">*</span> are required.</p>
   <div class="row">
   <?php //echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?>
    <?php echo $form->labelEx($model,'Contact No'); ?>
    <?php echo $form->textField($model,'contact_no'); ?>
    <?php echo $form->error($model,'contact_no'); ?>
</div>

 <div class="row">

    <?php echo $form->labelEx($model,'Address'); ?>
    <?php echo $form->textField($model,'address'); ?>
    <?php echo $form->error($model,'address'); ?>
</div>  

<div class="row buttons">
    <?php echo CHtml::submitButton('Save'); ?>
</div>

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

我的模特jobseekerprofile.php

<?php

类Jobseekerprofile扩展了CActiveRecord     {     public $ contact_no;     public $ dob;     公共性别;     public $ mstatus;     公共地址;     public $ user_id;

public static function model($className=__CLASS__)
 {
return parent::model($className);
 }
public function tableName()
{
    return 'job_seeker_profile';
}
public function rules()
  {
    return array(
    array('contact_no,gender,dob,address,mstatus','required'),
    );
 }

}   ?&GT;

有人帮帮我吗?

2 个答案:

答案 0 :(得分:0)

因为在每个请求中您创建了新的jobseekerprofile模型,所以每次提交时此代码都会创建新的jobseekerprofile记录。将您的行动改为:

public function actionpersonal()
{

$user_id = trim($_GET['id']);
$model=jobseekerprofile::model()->find(array(
                                     'select'=>'contact_no,address',"condition"=>"user_id=$user_id",
                                     'limit'=>1,));
if(isset($_POST['jobseekerprofile']))
 {
    $model->attributes=$_POST['jobseekerprofile'];
    if($model->save())
       {
          $this->redirect(array('profile','user_id'=>$model->user_id));
       }   
}


$this->render('personal',array('model' =>$model));
}

这应该有效。

答案 1 :(得分:0)

您还没有给出要编辑的用户的主键。 试试以下

$模型= jobseekerprofile ::模型() - &GT; findByPk($ ID); $ id是表的主键。 然后你可以写下面的

if($model->save())
           {
              $this->redirect(array('profile','user_id'=>$model->user_id));
           }   

如果你只使用$ model-&gt; save(),它会插入数据,但不会更新。