Nefunguje odkazování na stránky po přihlášení

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

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

Majkl578
Moderator | 1364
+
0
-

Gaudentius napsal(a):

co tato hláška z nete značí?

Chybu.

Zkontroluj logy a/nebo v boostrapu zapni laděnku: Debug::enable(Debug::DEVELOPMENT).

Editoval Majkl578 (13. 4. 2010 16:40)

Honza Kuchař
Člen | 1662
+
0
-

Pokud tam už je nějaký provoz, čti zde: https://forum.nette.org/…cet-ip-adres

RDPanek
Člen | 189
+
0
-

v bootstrapu: Debug::enable(Debug::DEVELOPMENT) mám.
v logu apache2 jsou akorát záznamy, že nemůže najít css soubory a .js – chybějící soubory tohoto typu podle mě nebudou příčinou, ne?

RDPanek
Člen | 189
+
0
-

Co tedy přesně znamená ta chybová hláška?

Server Error

The server encountered an internal error and was unable to complete your request. Please try again later. Nette Framework

Ondřej Mirtes
Člen | 1536
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

ještě jsem teďka zkoušel Checker – ale vše v pořádku… :-(

RDPanek
Člen | 189
+
0
-

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)

Honza Kuchař
Člen | 1662
+
0
-

Zdá se, že se ti nějak podařilo nedědit od Presenteru.

RDPanek
Člen | 189
+
0
-

:-)

takhle – odlaďováním jedné chyby jsem zanesl druhou – vše pracuje jak má :-) ale děkuji