ok, so im working on a contactController, Contact model, etc.. im trying to make it work in a way that i can view message and even send a single reply back, the model can say the reply as "replied". here is my form that handles the replying via the contactController.

class ReplyForm extends Model
{
	public $from;
	public $to;
	public $subject;
	public $body;
	public $replied;
	
	private $_contact;

	private $_emailSupport;
	
        public function __construct($id, $config = [])
        {
		$this->_emailSupport = ParamHelper::get('email.support');
		
		$this->_contact = Contact::findOne($id);
		if (!$this->_contact) {
		
			$msg = \Yii::t('app', 'Unable to find user.');
			throw new \yii\base\InvalidArgumentException($msg);
		}
		
		$contact = $this->_contact;
		$this->from = $this->_emailSupport;
		$this->to = $contact->name;
		$this->subject = $contact->subject;
		$this->body = $contact->body;
		
		parent::__construct($config);
	}
	
	public function rules(): array
	{
		return [
  			[['replied'], 'required'],
  			[['replied'], 'string'],
		];
	}
	
	/**
	* Attribute Labels
	* @return array
	*/
	public function attributeLabels(): array
	{
		return [
			'replied' => \Yii::t('app', 'Reply'),
		];
	}
	
	public function process(): ?bool
	{
		if (!$this->validate()) {
		
			return null;
		}
	
		$model = $this->_contact;
		$model->replied = $this->replied;
		$model->status = Contact::STATUS_REPLIED;
		
		if ($contact->save(false)) {
			
			return $this->sendEmail();
		}
		return false;
	}
	
	private function sendEmail (): bool
	{
		// Strip HTML and PHP tags from a string @url https://www.php.net/manual/en/function.strip-tags.php
		$stripReply = strip_tags($this->reply, '<p><a><i><b><u>');// Allows these.
		
		return \Yii::$app->mailer->compose()
				->setFrom($this->from)
				->setTo($this->to)
				->setSubject('Re: ' . $this->subject)
				->setTextBody($stripReply)
				->send();
	}
}

controller...
	public function actionView(int $id): Response|string
	{
		$model = $this->findModel($id);
		$modelReply = new ReplyForm($model->id);
		$request = \Yii::$app->request;
		
		if ($request->isPost && $modelReply->load($request->post())) {
			
			if ($modelReply->validate()) {
				if ($modelReply->process()) {
					
					$msg = \Yii::t('app', 'Your reply to {to} has been sent.', ['to' => $model->email]);
					\Yii::$app->session->setFlash('success', $msg);
					
					return $this->redirect(['index']);
				}
				else {
					\Yii::error('Failed to send reply email to ' . $model->email);
					
					$msg = \Yii::t('error', 'There was an error sending a reply to {to}', ['to' => $model->email]);
					\Yii::$app->session->setFlash('error', $msg);
				}
			}
			else {
				$msg = \Yii::t('error', 'There was a validation error. Please check your input.');
				\Yii::$app->session->setFlash('error', $msg);
			}
		}
		if ($request->isGet && $model->new_message == '1' 
			&& $model->status == Contact::STATUS_UNREAD) {
				
				$model->new_message = '0';
				$model->status = Contact::STATUS_READ;
				$model->save(false);// Ensure this is intended.
		}
		
		return $this->render('view', [
			'model' => $model,
			//'reply' => $reply,
		]);
	}

and i was trying to make it work in only the view.. figured i didn't need to break it up into reply view, a view view... i was also hoping to design the code in a way that if I already replied to the message, that i can't re-reply. also within the view i was hopeing to change the status, even if the replied form section is empty.. and save it as important, spam, unread, read.