PHP Nette - jak používat model prakticky
Ahoj, skoro všude čtu informaci, že pro složitější operace v PHP Nette není vhodné tyto operace provádět v presenteru, ale používat k tomu model, nevím však jak. Poradíte mně někdo jak používat v Nette model?
Ahoj,
jak používat model v Nette si můžeme ukázat na této ukázce, kdy vytvoříme model v souboru app/model/PomocneFunkce.php, který bude sloužit k tomu, aby nám zobrazoval uživatelské jméno právě přihlášeného uživatele pomocí metody showUser($uid):
Že existuje nějaký model PomocneFunkce.php musíme Nette řici v souboru app/config/config.neon
Model PomocneFunkce.php chceme používat v tomto případě v BasePresenteru, proto musíme model použít (use) a injektnout (@inject):
ODPOVĚĎ
Ahoj,
jak používat model v Nette si můžeme ukázat na této ukázce, kdy vytvoříme model v souboru app/model/PomocneFunkce.php, který bude sloužit k tomu, aby nám zobrazoval uživatelské jméno právě přihlášeného uživatele pomocí metody showUser($uid):
namespace App\Model;
use Nette;
use Nette\Security\User;
class PomocneFunkce
{
use Nette\SmartObject;
private $database;
private $user;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function showUser($uid)
{
if (isset($uid)) {
$username = this->database->table('users')
->select('username')
->where('id ?', $uid)
->order('datum DESC')
->fetch();
$username = $username->username;
} else {
$username = "Host";
}
return $username;
}
}
Že existuje nějaký model PomocneFunkce.php musíme Nette řici v souboru app/config/config.neon
services:
- App\Model\PomocneFunkce
Model PomocneFunkce.php chceme používat v tomto případě v BasePresenteru, proto musíme model použít (use) a injektnout (@inject):
namespace App\Presenters;
use Nette;
use Nette\Security\User;
use App\Model\PomocneFunkce;
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/**
* @inject
* @var PomocneFunkce */
public $modelPomocneFunkce;
public function beforeRender()
{
parent::beforeRender();
$uid = $this->user->id;
$this->template->userInfo = $this->modelPomocneFunkce->showUser($uid);
}
}