我是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.id 2.user_id 3.contact_no 4.gender 5.dob 6.mstatus 7.address 8.location_id 我想根据user_id
编辑contact_no和address中的数据Model-Jobseekerprofile.php - 规则
public function rules()
{
return array(
array('contact_no,address','required'),
);
}
控制器Sitecontroller.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));
}
}
有人帮帮我吗?
答案 0 :(得分:0)
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));
}
答案 1 :(得分:0)
似乎$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);
//
}
答案 2 :(得分:0)
首先检查你在$ _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);
上面的代码肯定会让你知道它为什么不保存