无法使用 yii 框架通过表单编辑具有用户 ID 的特定用户数据


Cannot edit particular user data with user id by form using yii framework

我是YII框架的新手。我正在使用YII框架进行更新操作。我有名为 sitecontroller.php 、型号jobseekerprofile.php、视图personal.php的控制器。

我收到错误:

Fatal error: Call to a member function isAttributeRequired() on a non-object in E:'wamp'www'yii'framework'web'helpers'CHtml.php on line 1414

我的桌子job_seeker_profile领域1.id2.user_id3.contact_no4.性别5.DOB6.状态7.地址8.location_id我想根据user_id编辑contact_no和地址中的数据

模型-求职者个人资料.php - 规则

public function rules()
  {
    return array(
                array('contact_no,address','required'),
    );
 }
控制器

-站点控制器.php

class SiteController extends Controller {
    public function actionpersonal()
  {
    $user_id = trim($_GET['id']);
    $model=Jobseekerprofile::model()->find(array(
                                         'select'=>'contact_no,address',"condition"=>"user_id=$user_id",
                                         'limit'=>1,));
    $model = Jobseekerprofile::model()->findByPk($user_id);                                  
    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));
  }
}

有人帮我吗?

似乎$model = Jobseekerprofile::model()->findByPk($user_id)没有找到任何东西,所以$model是空的,这就是$model->isAttributeRequired()抛出错误的原因。因此检查您传入的参数,并检查是否存在具有此类 id 的配置文件(或者您应该按属性而不是按 id 搜索?

除了你可以使用

public function actionPersonal($id) {
    $model = Jobseekerprofile::model()->findByPk($id);
    //
}

而不是

public function actionpersonal() {
    $user_id = trim($_GET['id']);
    $model = Jobseekerprofile::model()->findByPk($user_id);
    //
}
public function actionpersonal() {
    $user_id = trim($_GET['id']);
    $model = Jobseekerprofile::model()->findByPk($user_id);
    if (isset($_POST['Jobseekerprofile'])) {
        $model->attributes = $_POST['Jobseekerprofile'];  //post key edited
        if ($model->save()) {
            $this->redirect(array('profile', 'user_id' => $model->user_id));
        }
    }
    $this->render('personal', array('model' => $model));
}

首先检查你得到的_POST美元如果一切正常,请尝试保存

  $model = Jobseekerprofile::model()->findByPk($user_id);
if (isset($_POST['Jobseekerprofile'])) {
    $model->attributes = $_POST['jobseekerprofile'];
   $model->contact_no= $_POST['Jobseekerprofile']['contact_no'];  //post key edited
   $model->address = $_POST['Jobseekerprofile']['address']; 
    if ($model->save()) {
        $this->redirect(array('profile', 'user_id' => $model->user_id));
    }
}
$this->render('personal', array('model' => $model));

如果不起作用,则检查返回的模型

$error=$model->getErrors();
print_r($error);

上面的代码肯定会让你知道为什么它没有保存