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)

RSS tématu Téma zavřeno