Propojení presenteru s modelem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
matousekmich
Člen | 3
+
0
-

Zdravím

a předem se omlouvám za triviální dotaz, ale pravdpěpodobně mi uniká něco velmi podstatného. :(

Pokouším se implementovat Autentizaci skrze ACL, s tím, že jsem vytvořil v modelu novou třídu AclModel

<?php
namespace App\Model;

class AclModel {
  private $acl = null;

  public function __construct()
  {
    $this->acl = new Nette\Security\Permission;
	etc.
}

Ten se následně pokouším propojit s BasePresenter

<?php
namespace App\Presenters;

use Nette,
    App\Model,
    Nette\Application\UI\Form;


abstract class BasePresenter extends Nette\Application\UI\Presenter
{     public function startup() {
        parent::startup();
        if (!$this->getUser()->isLoggedIn()) {//pokud uživatel není přihlášen
            $acl = new AclModel(); //vytovření ACL modelu
atd.
}

Třída se ale pořád hledá ve složce Presenters…

Viz laděnka:

Class 'App\Presenters\AclModel' not found	search►

Tuším, že to bude triviální, ale velmi ocením pomoc! ;)

Mysteria
Člen | 797
+
0
-

Klasický problém s neznalostí jmenných prostorů.

$acl = new \App\Model\AclModel();
Lukeluha
Člen | 130
+
0
-

ACL vůbec v presenteru nepotřebuješ. Jediné, co stačí, je zaregistrovat jej v konfigu jako autorizátor.

Já osobně mám pouze továrničku AclFactory, v ní

public static function createAcl()
	{
		$permission = new Permission();
		$permission->addRole('guest');
		...
		return $permission;

a v configu poté

authorizator:
	    class: Nette\Security\Permission
	    create: App\Security\AclFactory::createAcl