[ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['list', 'message', 'message-save'], 'allow' => true, 'roles' => ['@'], ], ], ], ]; } public function actionList() { return $this->render('list'); } public function actionMessage($user_id) { $user = \Yii::$app->user->identity; $chat = Chat::find() ->where([ 'or', ['from_user' => $user_id,], ['to_user' => $user_id,], ]) ->andWhere([ 'or', ['from_user'=> $user->id,], ['to_user'=> $user->id,], ])->one(); if(!$chat instanceof Chat){ $chat = new Chat(); $chat->from_user = $user->id; $chat->to_user = $user_id; $chat->save(); } $post = \Yii::$app->request->post(); if(isset($post)){ $message = new Message(); if($message->load($post, 'Message')){ $message->chat_id = $chat->chat_id; $message->user_id = $user->id; $message->save(); return $this->redirect(['chat/message', 'user_id'=>$user_id]); } } return $this->render('message',[ 'chat' => $chat, 'user_id' => $user_id ]); } }