Předání proměnné z basePresenteru
- Taps
- Člen | 168
Zdravím, chtěl jsem pomocí metody beforeRender získat data z presenteru a vykreslit je v @layout, ale ve finále dostávám tuto chybu Class „SecuredPresenter“ not found. Mohl by mi prosím někdo poradit kde by mohla být chyba? níže uvádím kod
namespace App\Presenters;
use Nette;
use App\Model\PostFacade;
abstract class BasePresenter extends \Nette\Application\UI\Presenter {
/** @var \Model\PostFacade @inject */
public $PostFacade;
public function beforeRender()
{
parent::beforeRender();
// Získání dat z databáze pomocí vašeho modelu
$count = $this->PostFacade->getCountDisableItem()->fetch();
// Předání dat do šablony
$this->template->data = $count;
}
protected function startup() {
parent::startup();
}
/**
* Metoda pro odhlášení
*/
public function handleSignOut() {
$this->getUser()->logout();
//$this->redirect('Login:');
}
}
namespace App\Presenters;
use BasePresenter;
use Nette;
abstract class SecuredPresenter extends BasePresenter {
protected function startup() {
parent::startup();
if (!$this->getUser()->isLoggedIn()) {
$this->redirect('Sign:in',['backlink' => $this->storeRequest()]);
}
}
}
declare(strict_types=1);
namespace App\Presenters;
use Nette;
use Nette\SmartObject;
use App\Model\PostFacade;
use App\Model\UserFacade;
use Nette\Security\User;
use Contributte\PdfResponse\PdfResponse;
use SecuredPresenter;
use Nette\Application\UI\Form;
use Nette\Utils\DateTime;
use DateInterval;
use DatePeriod;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Worksheet\BaseDrawing;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Style\Border;
final class PostPresenter extends SecuredPresenter
{
private Nette\Database\Explorer $database;
private PostFacade $post;
private UserFacade $userdb;
private $item;
private $id;
public function __construct(Nette\Database\Explorer $database, PostFacade $post, UserFacade $userdb)
{
$this->database = $database;
$this->post = $post;
$this->userdb = $userdb;
}
public function renderDefault($uzivatel)
{
$param = 0;
$params = $this->getParameters();
if(isset($params)){
$this['form']->setDefaults($params);
$kmc = (isset($params['kmc'])) ? $params['kmc'] : FALSE;
$uzivatel = (isset($params['uzivatel'])) ? $params['uzivatel'] : FALSE;
$mesic = (isset($params['mesic'])) ? $params['mesic'] : FALSE;
}
$this->template->posts = $this->post->getItems($kmc,$uzivatel,$mesic,1);
}
- Šaman
- Člen | 2635
Všechno je v App\Presenters
, takže use
není
potřeba, ani to use BasePresenter;
v
SecuredPresenter
.
Nejdřív odlaď tuhle chybu, kód presenteru je zbytečný, když není
nalezen. Je to hláška Tracy? Používáš celé Nette ( ideálně kostru
nette\web-project
), nebo si to nějak skládáš sám? Mohlo by to
být v Bootstrapu (nastavení robot loaderu), nebo v configu (vytváření
presenterů).
Editoval Šaman (22. 3. 9:27)