Vlastní komponenta – Class ‚App\Presenters\Test‘ not found

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

Zdravím, vytvořil jsem vlastní komponentu a když jí chci použít, vyskočí chybová hláška „Class ‚App\Presenters\Test‘ not found“. Nevíte, čím to může být?

HomePagePresenter.php (uloženo v „app/presenters“):

<?php

namespace App\Presenters;

use Nette,
    App\Model;

class HomepagePresenter extends BasePresenter {
	public function renderDefault()	{
	          $this->template->anyVariable = 'any value';
                  $test = new Test();
	}
}

?>

Třída komponenty (uloženo v „app/components“):

<?php
use Nette\Application\UI\Control;

class Test extends Control {
   public function render() {
       echo "test";
   }
}

?>

No a v šabloně mám {control test}

zimmi
Člen | 94
+
0
-

@xjurny Buď komponentě přidej namespace App\Presenters, nebo ji volej jako new \Test().

David Matějka
Moderator | 6445
+
0
-

nesouvisi s nette, ale s neznalosti namespacu

Test nemas v zadnem namespace, proto do presenteru musis bud pridat use Test, nebo pouzit FQN – new \Test

Pavel Macháň
Člen | 282
+
0
-

xjurny napsal(a):

Zdravím, vytvořil jsem vlastní komponentu a když jí chci použít, vyskočí chybová hláška „Class ‚App\Presenters\Test‘ not found“. Nevíte, čím to může být?

Jak už tady psali ostatní.. new \Test
Každopádně ani stim ti to nebude fungovat. Komponentu do presenteru pridas pomoci:

	// createComponent  se pouzije pak v sablone jako jmeno komponenty
	public function createComponentMojeKomponenta() {
		return new \Test;
	}

	public function createComponentCokoliv() {
		return new \Test;
	}

Šablona

{control mojeKomeponenta}
{control cokoliv}

Továrničkou ti nebudu motat hlavu a raději si přečti znova dokumentaci + mrkni na http://www.php.net/…mespaces.php

Editoval EIFEL (10. 3. 2014 23:45)