module, problem s presenterom
- David Ďurika
- Člen | 328
Zdravim,
prerobil som si aresarovu strukturu a potom mi hadze tanto error: Cannot load
presenter ‚Front:Homepage‘, class ‚FrontModule\HomepagePresenter‘ was
not found in ‚CESTA
../app/FrontModule/presenters/HomepagePresenter.php‘.
neviem ze kde je chyba, tak prikladam aspon $router
<?php
// Step 4: Setup application router
$router = $application->getRouter();
$router[] = new Route('index.php', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>/<id>', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
?>
dakujem za pomoc
- David Ďurika
- Člen | 328
ano zrejme to pomohlo (mozes mi pls napisat ze preco to tam ma byt? alebo nejake linky kde si o tom mozem nico precitat, dik)
a teraz mi hlasi toto:
Class ‚FrontModule\BasePresenter‘ not found
je to zrejme preto lebo Homepage subor je potomkom BasePresentera (po starom som to mal tak) ale teraz ho zrejme nevie najst…
<?php
namespace FrontModule;
use Nette\Application\AppForm;
class HomepagePresenter extends BasePresenter
{
...
}
?>
Editoval achtan (18. 12. 2010 18:38)
- figi
- Člen | 9
Zdravím,
v práci s Nette jsem naprostý začátečník a tak jsem si z tutoriálů
stáhl příklad ‚Statické ACL v modulárnej aplikácii‘. Jelikož mi
hostitel neumožňuje přístup do nadřízené složky, tak mám adresáře
app, temp a log umístěny v rootu www stránek.
Po spuštění v prohlížeči vše funguje jak má. Problém nastane, když cokoliv změním v souboru app/AdminModule/presenters/DefaultPresenter.php:
<?php
namespace AdminModule;
use Nette;
class DefaultPresenter extends \BasePresenter
{
}
?>
Definici třídy jsem přepsal na:
<?php
...
final class DefaultPresenter extends \BasePresenter {
...
?>
Po uložení mi laděnka hlásí v tomto souboru na řádku 2 chybu:
Namespace declaration statement has to be the very first statement in
the script.
Poradí mi někdo v čem by mohl být problém?
Nette provozováno na:
Server system: Linux nibiru 2.6.26–2–686 #1 SMP Tue Mar 9 17:35:51 UTC
2010 i686
Apache version: Apache/2.2.9 (Debian) PHP/5.3.3–0.dotdeb.1 with
Suhosin-Patch
PHP version: 5.3.3–0.dotdeb.1
Nette version: 2.0 Alpha 2 pro PHP5.3
Předem moc díky.
Filip
- figi
- Člen | 9
Chybovou hlášku jsem si samozřejmě přeložil, ale to na problému nic
neřeší.
Jak jsem již psal v prvním dotazu…soubor
app/AdminModule/presenters/DefaultPresenter.php
začíná…
<?php
namespace AdminModule;
...
?>
Z toho je zřejmé, že to po mě chce něco, co je splněno. ;-)
Editoval figi (19. 12. 2010 13:37)
- figi
- Člen | 9
Tohle je celé…
app/AdminModule/presenters/DefaultPresenter.php:
<?php
namespace AdminModule;
use Nette;
final class DefaultPresenter extends \BasePresenter
{
}
?>
Je to originál souboru z příkladu (viz výše). Do originálu jsem doplnil pouze klauzuli final před deklaraci třídy presenteru. Jakmile v tom originálním souboru cokoliv změním, tak to začne vyhazovat výše uvedenou hlášku. A i když všechny změny vymažu a uložím, tak to pořád hází tuto chybu. Pomůže jedině opětovné zkopírování a přepsání originálním souborem z příkladu. ;-(
- figi
- Člen | 9
Napřed se musím omluvit a opravit. Testovaným příkladem je
**NetteFramework-2.0dev-PHP5.3\examples\Modules-Usage**.
Jinak platí vše co jsem již psal. Pouze jsem upravil cesty k adresářům
v index.php. Vše fungovalo.
Když si vypnu laděnku, tak jsem ve zdojovém kódu v prohlížeči žádné
znaky odpovídající BOM nenašel. Příklad se po vypnutí laděnky zobrazil,
akorát bez odkazu do AdminModulu.
Editoval figi (19. 12. 2010 15:23)
- figi
- Člen | 9
Zdá se, že jsem na to přišel. Problém bude v PS Padu, který
používám k editování scriptů. Když jsem zkusil soubor pouze otevřít a
uložit, tak to způsobí výše zmiňovanou chybu.
Tak jsem zkusil soubor editovat přes total commander a funguje to normálně.
Nenapadá někoho čím by to mohlo být? Popřípadě doporučit vhodný editor
pro Nette, abych se s tímto problémem trápit. ;-)
- Filip Procházka
- Moderator | 4668
netbeans, aspoň pro začátek ;)
Editoval HosipLan (19. 12. 2010 16:50)
- David Ďurika
- Člen | 328
este sa vratim k mojmu problemu lebo dajako sme odbocili :)
mam takuto adresrovu strukturu cize ten priblem som vyriesil takto:
<?php
...
class HomepagePresenter extends BasePresenter
...
?>
zmenene na toto
<?php
...
class HomepagePresenter extends \BasePresenter
...
?>
ale aj tak mi to hadze dalsie errory ked volam napr:
<?php
$allPostsData = PostsModel::fetchAll();
?>
lebo adresar s modelmy je o jednu uroven visie ako adresar s presenterom.
(adresrova struktura)
samozrejme tento zapis to riesi:
<?php
$allPostsData = \PostsModel::fetchAll();
?>
ale neslo by to vyriesit aj nejak inac jednotne, aby smo nemusel pre kazde volanie modelu riesit zapisom \NameModel