James D
James D

Reputation: 135

Error: getting unknown property: yii\web\Application::generateid

I have the below code in studentsController.php to add data to 2 tables from a form but im getting error. It is to add to students table, then add some data to the users table too. I feel i'm supposed to add something at the top via "use' keyword but I don't know.please help.

public function actionCreate() {
    $model = new model();
    $user = new Users();

    if ($model->load(Yii::$app->request->post())) {

        $model->id = Yii::$app->generateid->getGUID();  //this line caused the error
        $model->save();
        $studentId = $model->id;
        if($user->load(Yii::$app->request->post()))
        {
            $user->id = $model->id;
            $user->firstname = $model->firstname;
            $user->lastname = $model->lastname;
            $user->username = $model->phone;
            $user->password = 'pass123';   //default password
            $user->role = 'student';
            $user->save(false);
        }
        return $this->redirect(['view', 'id' => $model->id]);
    } else {
         return $this->render('create', [
             'model' => $model,
             'user' => $user,                 
         ]);
    }
}

Upvotes: 1

Views: 7306

Answers (1)

Stefano Mtangoo
Stefano Mtangoo

Reputation: 6534

You seem to miss generateid in your web.php It should be something like this

GenerateIDs.php inside @app/components folder

<?php 
namespace app\components; 

class GenerateIDs extends \yii\base\Component
{
    public function getGUID()
    {
       //do your stuff here
    }
    //....
}

then in your @app/config/web.php you have something like

<?php
return [
    'components' => [
        'generateid' => [
            'class'=>'app\components\GenerateIDs',
            // other configurations for the component
        ],
    ],
];

then you can use it in your app as you wish

public function actionCreate() {
$model = new model();
$user = new Users();

if ($model->load(Yii::$app->request->post())) {

    $model->id = Yii::$app->generateid->getGUID();  //this line caused the error
    $model->save();
    $studentId = $model->id;
    if($user->load(Yii::$app->request->post()))
    {
        $user->id = $model->id;
        $user->firstname = $model->firstname;
        $user->lastname = $model->lastname;
        $user->username = $model->phone;
        $user->password = 'pass123';   //default password
        $user->role = 'student';
        $user->save(false);
    }
    return $this->redirect(['view', 'id' => $model->id]);
} else {
    return $this->render('create', [
                'model' => $model,
                'user' => $user,                 
    ]);
}

Please take a look at Yii2 guide on Components

Upvotes: 4

Related Questions