我是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;
有人帮帮我吗?
答案 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(),它会插入数据,但不会更新。