Yii Предварительная загрузка текстовых полей формы из другой модели

Я пытаюсь предварительно загрузить текстовые поля из другой модели, я использовал следующий код, который не работает, вот мой код.

public function actionCreate($id)
{                
    $id1 = Yii::app()->user->id;            
    $model = new DoctorLists;
    $prof = new Profile;
    $prof = Profile::model()->findByPk($id)

    $model->doctor_firstname = $prof->firstname;
    $model->doctor_lastname = $prof->lastname;
    $model->doctor_email = $prof->email;
    $model->doctor_mobile_no = $prof->mobile_num;
    $model->consult_no = $prof->alter_mobile_num; 

    if(isset($_POST['DoctorLists'])
    { 
        $model->attributes=$_POST['DoctorLists'];    
        if($model->save())
        {                           
            $this->redirect(array('view','id'=>$model->doctor_id));
        }
    }
    $this->render('create',array(
                                'model'=>$model,
                  ));
}

person user1799171    schedule 27.02.2014    source источник
comment
Рад, что вы это исправили. Вместо того, чтобы давать ответ, который перезаписывает вопрос, добавьте свой ответ в качестве ответа. Мы поощряем это, и вы также можете отметить это как решенное. Вы бы сделали это здесь? Затем вы можете вернуть вопрос к его предыдущему состоянию, используя инструменты редактирования.   -  person halfer    schedule 27.02.2014


Ответы (2)


Я сделал простое изменение в запросе и заставил его работать, и вот рабочий код. Теперь я мог предварительно загрузить содержимое из другой модели.

public function actionCreate($id)
{                
$id1 = Yii::app()->user->id;            
$model = new DoctorLists;
$prof = new Profile;
$prof = Profile::model()->find('user_id=:user_id', array(':user_id'=>$id)); 

$model->doctor_firstname = $prof->firstname;
$model->doctor_lastname = $prof->lastname;
$model->doctor_email = $prof->email;
$model->doctor_mobile_no = $prof->mobile_num;
$model->consult_no = $prof->alter_mobile_num; 

if(isset($_POST['DoctorLists'])
{ 
    $model->attributes=$_POST['DoctorLists'];    
    if($model->save())
    {                           
        $this->redirect(array('view','id'=>$model->doctor_id));
    }
}
$this->render('create',array(
                            'model'=>$model,
              ));
}
person user1799171    schedule 27.02.2014

В вашем коде вы пропустили фигурные скобки для оператора if. Попробуйте код ниже

if($id==$pid)
 {
    $model->doctor_firstname = $prof->firstname;
    $model->doctor_lastname = $prof->lastname;
    $model->doctor_email = $prof->email;
    $model->doctor_mobile_no = $prof->mobile_num;
    $model->consult_no = $prof->alter_mobile_num; 
 }
 else
 {
    throw new CHttpException(404,'The requested page does not exist.');
 } 

Измените код просмотра как:

<?php echo Chtml::textField('doctor_firstname', $model->doctor_firstname ); ?>
person Kumar V    schedule 27.02.2014
comment
Конечно верно, но все равно не работает. Я думаю, что ключ делает проблему - person user1799171; 27.02.2014
comment
эта проблема была, и я соответствующим образом отредактировал приведенный выше код, спасибо - person user1799171; 27.02.2014