nette nedokaze najit soubor
- Syntey
- Člen | 15
Zdravím, dostávám error:
Nette\DI\ServiceCreationException
Class App\Model\Authenticator used in service ‚23_App_Model_Authenticator‘ not found or is not instantiable.
Píše, že nedokáže najít soubor Authenticator.php, ale ten je přesně v app/model/
Soubor config.neon:
- services
- App\Model\Authorizator
- App\Model\Authenticator
- App\RouterFactory
router: @App\RouterFactory::createRouter
Authorizator to navíc v pohodě najde
Nestalo se někomu něco podobného ?
Díky
- MartinitCZ
- Člen | 580
Máš v pořádku namespace v daném souboru?
Nemáš typo v názvu třídy?
Smazal si cache?
- Syntey
- Člen | 15
Měl bych to mít správně, pro jistotu ještě přikládám zdroják, cache jsem smazal.
<?php
namespace App\Model\Security;
use Nette\Security as NS;
class MyAuthenticator extends Nette\Object implements NS\IAuthenticator
{
public $database;function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = $this->database->table(‚Users‘)
->where(‚Jmeno‘, $username)->fetch();if (!$row) {
throw new NS\AuthenticationException(‚User not found.‘);
}if (!NS\Passwords::verify($password, $row->password)) {
throw new NS\AuthenticationException(‚Invalid password.‘);
}return new NS\Identity($row->id, $row->role);
}
}
- MartinitCZ
- Člen | 580
Ok, takže nemáš. To co nastavuješ v services není cesta k souboru, ale
název třídy s namespace.
Místo App\Model\Authenticator máš mít
App\Model\Security\MyAuthenticator.