カスタム ルートを設定しました。現在、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 をキャッチしていないことを意味します。何か案は?