0

ユーザーコントローラーに、というメソッドがあります。このメソッドはview、指定された(URLで)ユーザーを表示する必要があります。

public function view($username = null) {
    $this->User->username = $username;

    if (!$this->User->exists()) {
        throw new NotFoundException('Няма такъв потребител!');
    }

    if (!$username) {
        $this->Session->setFlash('Няма такъв потребител!');
        $this->redirect(array('action' => 'index'));
    }
    $this->set('user', $this->User->read());
}

そして、ルート構成で:

    Router::connect('/:username',   array('controller' => 'users', 'action'=> 'view'), array('username' => '^([a-z0-9])+$'));

しかし、試してみるとwww.example.com/Username、致命的なエラーが返されます:コントローラーがありません。

私もこれを試しました:

Router::connect('/users/:username', array('controller' => 'users', 'action'=> 'view'), array('pass' => array('username'), 'username' => '^([a-z0-9])+$'));
4

1 に答える 1

2

残念ながら、この種のセットアップを使用するの/:usernameは単純すぎるため、他のすべてのルートをほとんどオーバーライドします。これを効果的に(+適切なCakePHPの方法で)行うには、カスタムルートをセットアップする必要があります。これは私のもので、ほぼ同じことを実現しています。ほとんどの場合、「製品」を「ユーザー」に置き換えてください。ただし、何が起こっているのかを理解するために読んでください..

それでもうまくいかない場合は、ルート構成も見てください。

/user/dunhamzzをプロファイルにルーティングする場合は、次のように設定します。

Router::connect('/user/:username',
    array('controller' => 'users', 'action' => 'view'),
    array('pass' => array('username')
);

次に、ビュー アクションは単純にユーザー名を最初の引数として取得します。

public function view($username) {

}
于 2012-05-30T12:56:45.727 に答える