1

カスタム ルートを設定しました。現在、routes.php は次のようになっています。

<?php
$router = new Phalcon\Mvc\Router();

$router->add('athlete/{username}', array(
    'controller' => 'athlete',
    'action' => 'index',
));

return $router;

私のservices.phpでは、ルーターを設定しています:

$di->set('router', function() {
    return require __DIR__ . '/routes.php';
});

私の AthleteController のインデックス アクションは次のようになります。テスト目的で、ビューにパラメーターを渡しています ( username):

public function indexAction()
{
    $username = $this->dispatcher->getParam('username');

    if (!isset($username)) {
        $user = Users::findFirstByUsername($this->auth->getIdentity()['username']);
    } else {
        $user = Users::findFirstByUsername($username);
        if (!$user) {
            $this->flash->error('Could not find this user');
        }
    }
    $this->view->user = $user;
    $this->view->username = $username;
    $this->view->setTemplateBefore('public');
}

カスタムパラメータを使用していないときは機能し、ユーザーを見つけてユーザー名を表示できます。ただし、たとえば url を使用している場合athlete/kerowan、エラーが発生しますAction 'kerowan' was not found on handler 'athlete'。これは、私の理解では、ルーターが何らかの理由で正しく設定されていないか、URL をキャッチしていないことを意味します。何か案は?

4

2 に答える 2

1

デフォルトでは、phalcon のルーターは、この規則で自動ルーティングを使用しています:'/:module/:controller/:action/:paramsマルチモジュール アプリケーションと'/:controller/:action/:paramsシングル モジュール アプリケーションです。それを取り除きたい場合は、ルーターコンストラクターに false を渡す必要があります。

于 2016-03-20T17:49:27.463 に答える