我是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);
上面的代码肯定会让你知道为什么它没有保存