Nefunguje odkazování na stránky po přihlášení
- RDPanek
- Člen | 189
Ahoj, mám menší problém. Vytvořil jsem aplikačku, která mi na lokále
bez problémků funguje, na serveru ale ne.
HomePage funguje v pořádku, ale když se přihlásím, tak vyskočí hláška
podobná apache, ale je z nete:
Server Error
The server encountered an internal error and was unable to complete your
request. Please try again later.
Nette Framework
co tato hláška z nete značí? díky Dan
- Honza Kuchař
- Člen | 1662
Pokud tam už je nějaký provoz, čti zde: https://forum.nette.org/…cet-ip-adres
- Ondřej Mirtes
- Člen | 1536
V bootstrapu si změň nastavení
$application->catchExceptions
na FALSE
.
Případně se podívej do app/log na exportované výjimky z Laděnky.
- RDPanek
- Člen | 189
v bootstrapu jsem změnil app na: $application->catchExceptions =
FALSE;
a místo té servero/nette hlášky mi už klasicky funguje laděnka –
aspioň to :-) a vypisuje:
Cannot load presenter ‚Options‘, class ‚OptionsPresenter‘ is not Nette\Application\IPresenter implementor.
a hodnoty z laděnky:
<?php
Nette/loader.php (768) source ► Presenter-> createRequest (arguments ▼)
object(WebsPresenter) (30) ►
$destination
string(23) "Options:websDetailUsers"
$args
array(0)
$mode
string(8) "redirect"
?>
je vidět, že nemůže najít OptionsPresenter, který volám redirectem z jiného presenteru:
<?php
$this->redirect('Options:websDetailUsers');
?>
- RDPanek
- Člen | 189
nemůže to být problém v routování?
v bootstrapu mám zatím:
<?php
$router[] = new Route('index.php', array(
'presenter' => 'Default',
'view' => 'default',
), Route::ONE_WAY | Route::SECURED);
$router[] = new Route('<presenter>/<view>/<id>', array(
'presenter' => 'Default',
'view' => 'default',
'id' => NULL,
), Route::SECURED);
?>
- RDPanek
- Člen | 189
A ještě jeden poznatek.
když dědím od Presenteru – tak mi ladička jen zařve:
Call to undefined block ‚content‘. – ale to už je další řešitelný
problém (stejně zajimavý, že na localhostu cajk a na serveru to takhle
vyvádí :-( )
takže se už řeší chyba aktuálního presenteru.
ale jak mile dědím v presenteruod Base presenteru
<?php
class OptionsPresenter extends BasePresenter
?>
který vypadá takto:
<?php
abstract class BasePresenter extends Presenter
{
public $oldLayoutMode = FALSE;
protected function startup()
{
parent::startup();
$user = Environment::getUser();
// prihlaseni vyprsi po 30 min., neaktivity nebo po zavreni prohlizece
$user->setExpiration('+ 30 minutes');
// nazev uzivatele prskni na do sablony
$this->template->user_name = $user->getIdentity()->name;
//automaticke odhlaseni pokud vyprsi session
if((!$user->getIdentity()->name) AND
($this->name != "Myaccount" AND $this->view != "logout"))
$this->redirect('MyAccount:logout');
// tady kontroluju jestli mam opravneni zobrazit
Environment::getUser()->isAllowed($this->name);
//Debug::dump($user->getIdentity()->roles);
//dump($user->getIdentity());
/** dam vedet vsem template, jakou roli mam */
$this->template->myGroup = $user->getIdentity()->roles['0'];
/** kontrola, zda-li uzivatel naklada se svymi daty */
$myOption = new MyOptions();
if(Environment::getHttpRequest()->getQuery('id_web') AND
($user->getIdentity()->group != "admin")){
if(count($myOption->ControlIdWebIdUser(
Environment::getHttpRequest()->getQuery('id_web'),
$user->getIdentity()->id_user)) == '0'){
/** nevyhovuje, presmeruj **/
$this->redirect('Webs:default');
}
}
/** absolutni cesta */
$this->template->root_app = WWW_DIR;
}
}
?>
tak vyskočí hláška:
BadRequestException #404
Cannot load presenter ‚Options‘, class ‚OptionsPresenter‘ is not Nette\Application\IPresenter implementor.
:-( hmmm.
Editoval Gaudentius (14. 4. 2010 8:44)