nette nedokaze najit soubor

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

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
+
+1
-

Máš v pořádku namespace v daném souboru?
Nemáš typo v názvu třídy?
Smazal si cache?

Syntey
Člen | 15
+
0
-

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
+
+1
-

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.

Syntey
Člen | 15
+
0
-

Aha, mám v tom ještě bordel.. Díky moc :)