Как я могу использовать имя пользователя от пользователя в качестве пути - PullRequest
0 голосов
/ 29 октября 2018

Я хочу взять имя пользователя у каждого пользователя и указать путь к его профилю. поэтому путь должен быть localhost: 8080 / user, но я не могу заставить его работать. хотя я могу заставить его работать с id.

Заранее спасибо за помощь! :)

routes.json

":username": {
    "controller": "User",
    "method": "getProfileByUsername",
    "params": {
      "username": "string"
    }
  }

UserController.php

public function getProfileByUsername($username)
    {
        $userModel = new UserModel();

        try {
            $user = $userModel->getProfileByUsername($username);
        } catch (\Exception $e) {
            $properties = ['errorMessage' => 'User not found!'];
            return $this->render('views/error.php', $properties);
        }

        $properties = ['user' => $user];
        return $this->render('views/profile.php', $properties);
    }

UserModel.php

public function getProfileByUsername($username)
    {
        $query = 'SELECT * FROM users WHERE username = :username';
        $sth = $this->db->prepare($query);
        $sth->execute(['username' => $username]);

        $users = $sth->fetchAll(PDO::FETCH_CLASS, self::CLASSNAME);
        if (empty($users)) {
            throw new NotFoundException();
        }


        return $users[0];
    }

1 Ответ

0 голосов
/ 31 октября 2018

Вы должны настроить свой веб-сервер так, чтобы перенаправлять такие пути к чему-то вроде getuser.php?user=(user) - как это сделать, зависит от вашего веб-сервера.

В Apache 2 это можно сделать с помощью .htaccess. Я предлагаю иметь пользователей в какой-то подпапке, например /user/, так как это значительно упростит перенаправление.

RewriteEngine On
RewriteRule ^user/(.*)$ ./getuser.php?user=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...