Nette 2.1 jak do vlastního routeru dostat DB
- motorcb
- Člen | 552
Zdravim.
V nejnovější verzi Nette 2.1 píšu vlastní router pro hezké odkzaky
na uživatelské účty:
…cz/uzivatel/nick
RouterFactory.php
$route = new UserRouter('uzivatel/<id>[-<nick>]', 'Front:User:detail');
$router[] = $route;
UserRouter.php
<?php
//routovani uzivatelskych jmen
class UserRouter extends Nette\Application\Routers\Route
{
public function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl)
{
// upravím parametry
$params = $appRequest->getParameters();
$params['nick'] = "funguje";
$appRequest->setParameters($params);
// vytvořím url
return parent::constructUrl($appRequest, $refUrl);
}
}
Jak mám do UserRouter.php dostat databázi bych se podíval podle ID jaký má uživatel nick a vrátil ho?
Děkuji za rady
- Marek Šneberger
- Člen | 130
private $repo;
public function __construct(\Repositories\UsersRepository $repo)
{
$this->usersRepository = $repo;
}
A pak v oněch metodách klasicky
$user = $this->usersRepository->findByNick(....);
- motorcb
- Člen | 552
@Marek Šneberger:
Díky, ale tím si získám repository pro RouterFactory.php, jak ale to repository dostanu do UserRouter???
class RouterFactory
{
private $userRepository;
public function __construct( Repository\User $userRepository )
{
$this->userRepository = $userRepository;
}
- Marek Šneberger
- Člen | 130
Tak ho nedávej do RouterFactory, kde je ti nejspíš k ničemu, ale vlož to do UserRouter ne?
Popřípadě se mrkni sem :-)
- motorcb
- Člen | 552
@Marek Šneberger:
Paráda, díky, šel jsem na to úpně špatně :-)
Dokázal by mi někdo vysvětlit jak přesněji funguje ukázkový router od Honzy Tvrdíka
Nyní mám url ve tvaru:
<a href="{plink :Front:User:detail, $user->id}"> => /user/detail/9
Já bych na to chtěl poslat vlastní router, který by změnil url na:
/user/detail/<id>-<nick>
Jen to z té ukázky nevykoukám :-(
Díky
- Jan Tvrdík
- Nette guru | 2595
Potřebuješ ten odkaz tvořit takto:
<a href="{plink :Front:User:detail, id => $user->id, nick => $user->nick}">