Class ‚App\Components\Login\LoginControl‘ not found

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

Problém je v tom, že môj presenter(viď. nižšie) **nevie nájsť môj **LoginControl class, pričom ten sa nachádza v app/components/Login/LoginControl.php – zatiaľ čo presenter je v app/presenters/HomepagePresenter.php

Error ktorý dostávam: Class ‚App\Components\Login\LoginControl‘ not found

<?php
namespace App\Components\Login;

	class LoginControl extends \Nette\Application\UI\Control {

		/**
		 * @var Nette\Http\User
		 */
		private $user;
		public function __construct(Nette\Http\User $u) {
			parent::__construct();
			$this->user=$u;
		}
		public function render() {
			$this->template->setFile(__DIR__ . '/login.latte');
			$this->template->render();
		}
		protected function createComponentLoginForm() {
			$form = new LoginForm;
			$form->onSubmit[] = array($this, 'postForm_onSubmit');
		}

		protected function cryptPassword($password) {
			return crypt($password,crypt('qyzxjb$te6546)98s=-36rgvdjha3;.,kenq`~','5*4234hdnsf~3414-*/451vsgaquerhfg?><ML:qwe322441asdc'));
		}

				/** @var \App\Model\Authenticator @inject */
		private function postForm_onSubmit(Nette\Application\UI\Form $form) {
			$values = $form->getValues();
			$this->user->login($values['name'],$this->cryptPassword($values['pass']));
		}
	}
<?php

namespace App\Presenters;

use Nette,
	App\Model,
	App\Components\Login;

/**
 * Homepage presenter.
 */
class HomepagePresenter extends BasePresenter
{
	private $database;
	private $authenticator;
	function __construct(Nette\Database\Context $connection) {
		$this->database=$connection;
	}
	private $welcome='Welcome to ArcheryArena!';
	public function renderDefault()
	{
		$this->template->welcome = $this->welcome;
	}

	protected function createComponentLogInForm() {
		$this->authenticator= new \App\Model\MyAuthenticator($this->database);
		$this->user->setAuthenticator($this->authenticator);
		return new \App\Components\Login\LoginControl($this->user);
	}



}

Vopred Vďaka za odpoveď

Durisvk
Člen | 31
+
0
-

Ešte doplnok, zrejme si musím naconfigurovať mapping aj na componenty.
Zatiaľ obsahuje len cesty na Module a na Presenters. Takže vyzerá takto:

parameters:


php:
	date.timezone: Europe/Prague


nette:
	application:
		errorPresenter: Error
		mapping:
			*: App\*Module\Presenters\*Presenter
	session:
		expiration: 14 days


services:
	- App\RouterFactory
	router: @App\RouterFactory::createRouter
	authenticator: \App\Model\MyAuthenticator

Neviem však ako to urobiť…Pomôžete mi prosím? :)

Hafran
Člen | 121
+
0
-

A máš tu třídu určitě někde, kde ji najde robotLoader? Tzn. defaultně v adresáři app nebo libs? (trošku se ztrácím v těch namespacech ;) A samozřejmě promazat celou cache jestlis to třeba přesouval.

Editoval Hafran (16. 8. 2014 19:15)

Šaman
Člen | 2666
+
0
-

Na komponenty se žádný mapping konfigurovat nemusí. Namespaces máš asi dobře, resp. nevidím tam chybu. Takže nejpravděpodobnější je promazat cache, jestli to nepomůže, tak nahoď cely projekt někam na GitHub/BitBucket, ať můžeme zkontrolovat jestli není chyba někde jinde.

Durisvk
Člen | 31
+
0
-

Opäť zdravím, cache som premazal, nepomohlo. Stále ten istý error.
GitHub : https://github.com/…ArcheryArena

Marek Šneberger
Člen | 130
+
0
-
return new \App\Components\LoginControl\LoginControl($this->user);

Editoval Marek Šneberger (16. 8. 2014 22:05)

Šaman
Člen | 2666
+
0
-

Protože App\Components\LoginControl\LoginControl a nikoliv App\Components\Login\LoginControl.

V prvním příspěvku to máš dobře, ale v kódu máš jiný NS u toho loginControlu.

Durisvk
Člen | 31
+
0
-

Šaman:
Prepísal som ten namespace, ale nič sa nezmenilo, error prebýva.
Marek:
Nemám tam

return new \App\Components\LoginControl\LoginControl($this->user);

ale

return new \App\Components\Login\LoginControl($this->user);
CZechBoY
Člen | 3608
+
0
-

Možná ještě zkusit tu anotaci @inject a @var dát pryč u private function postForm_onSubmit.

Durisvk
Člen | 31
+
0
-

nepomohlo :/

Durisvk
Člen | 31
+
0
-

Počujte, presúval som svoj projekt z jedného folderu na druhý. tie staré cache som skúšal vymazať, ale píše mi Permission denied. Možno sa to ešte stále drží tých starých cache súborov. Neviete ako ich mám vymazať prosím?

Durisvk
Člen | 31
+
0
-

Hoši, neviem čo sa stalo, ale zázračne mi to začalo ísť…To nemám rád, pretože teraz neviem, aké je riešenie do budúcna…

Myiyk
Člen | 321
+
0
-

Permission denied znamená, že program nemá oprávnění pro práci se soubory. Nejspíš jsi to opravil tím, že jsi do těch složek pro cache povolil přístup chmod -R 777 temp log (na linuxu).

Do budoucna když nefunguje nějaké načítání tříd, nebo nefunguje databáze tak smaž cache.