have multiple model on same form I dont want to save data on both model but i just want to display one variable on view file
I have 2 tables 
Organiser and Event
Organiser will log in and Create Event 
Now there are few fields which are common in both tables
so when logged in user click on Create Event button i want to display address from Organiser table on the form
This is what i have done until now which may not be the right approach so let me know if that can be achieved any other simpler way
public function actionCreate()
{
    $model = new Event();
    $model2 = $this->findModel2(Yii::$app->user->id);
    if ($model->load(Yii::$app->request->post())) {
        if($_POST['User']['address'] == null)
        {
            $model->location = $model2->address;
        }
        else{
            $model->location = $_POST['User']['address'];
        }
        $model->is_active = 1 ;
        $model->save();
        return $this->redirect(['view', 'id' => $model->id]);
    } else {
        return $this->render('create', [
            'model' => $model,
            'model2' => $model2
        ]);
    }
}
protected function findModel2($id)
{
    if (($model2 = User::findOne($id)) !== null) {
        return $model2;
    } else {
        throw new NotFoundHttpException('The requested page does not     exist.');
    }
}
And here is my _form.php code
 <?php $form = ActiveForm::begin([
    'options' => [
        'id' => 'create-event-form'
    ]
]); ?>
 <?= $form->field($model, 'interest_id')->dropDownList(
    ArrayHelper::map(Areaintrest::find()->all(),'id','area_intrest'),
    ['prompt'=> 'Select Event Category']
) ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
   <?php
      if ($model->isNewRecord){
        echo $form->field($model2,'address')->textInput(['class' => 'placepicker form-control'])->label('Location');
    }
    else
        echo $form->field($model,'location')->textInput(['class' => 'placepicker form-control']);
?>
<di"form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update',     ['class' => $model->isNewRecord ? 'btn btn-danger' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
Now the problem here seems is that when it comes to saving part throws error saying unknown property address because that field doesnt exists in the database table Event
i just want that data to display it on the location field of my create form
so what should i do here
Here is the table structure
Organiser          Event 
organiser_id       event_id
username           organiser_id 
clubname           title
image              location
email
firstname
lastname    
address 
Error page says something like this
Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: common\models\Event::address
And here is my Event model
class Event extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
      return 'event';
    }
public function rules()
{
    return [
        [['organiser_id', 'interest_id', 'title', 'location'], 'required'],
        [['organiser_id', 'interest_id'], 'integer'],
        [['title', 'location'], 'string', 'max' => 255],
    ];
}
/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'id' => 'ID',
        'organiser_id' => 'Organiser ID',
        'interest_id' => 'Event Type',
        'title' => 'Event Title',
        'location' => 'Location'
    ];
}
public function getOrganiser()
{
    return $this->hasOne(User::className(), ['organiser_id' => 'organiser_id']);
}
}
Here is my User model represent Organiser table and model name in frontend model SignUp.php
   class SignupForm extends Model
{
public $username;
public $address;
public $password;
public $password_repeat;
public function rules()
{
    return [
        ['username', 'filter', 'filter' => 'trim'],
        ['username', 'required'], 
        ['address', 'required'],
        ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
        ['username', 'string', 'min' => 2, 'max' => 255],
        [['file'], 'file', 'extensions'=>'jpg, gif, png'],
        ['password', 'required'],
        ['password', 'string', 'min' => 6],
        ['password_repeat', 'compare', 'compareAttribute' => 'password'],
    ];
}
public function attributeLabels()
{
    return [
        'password_repeat' => 'Confirm Password',
        'address' => 'Address',
        'username' => 'Username',
    ];
}
public function signup()
{
    if ($this->validate()) {
        $user = new User();
        $model = new SignupForm();
        $user->address = $this->address;
        $user->username = $this->username;
        $user->setPassword($this->password);
        $user->generateAuthKey();
        if ($user->save()) {
            return $user;
        }
    }
    return null;
}
}
So i want to display the organiser.address on the Create event form in the field location
Hope you can understand it now
thank you
May be your function should look like
public function actionCreate()
{
    $event= new Event();
    $user= $this->findModel2(Yii::$app->user->id);
    $event->location = $user->address;
    if ($event->load(Yii::$app->request->post()) && $event->save()) {//active can set by default validator
        return $this->redirect(['view', 'id' => $event->id]);
    }
    return $this->render('create', [
        'event' => $event
    ]);
}
And in form you show location always. Then you can use it in update and create as well without ifs in view. Hope this will help you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With