Všechny odkazy vedou na „#“

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

Nazdárek,

nedaří se mi rozchodit web na ostrém serveru. Na localhostu mi vše šlape jak má, ale když aplikaci překopíruji na ostrý server, tak to nejde. Konkrétně se mi na ostrém serveru volá hned Error presenter a všechny odkazy mi vedou na „#“ a to jak absolutní {plink //action}, tak i relativní {plink action}. Vše ostatní funguje – @layout.phtml, CSS, atd. Aplikace mi teď běží na doméně II. řádu, ale zkoušel jsem to i na I. řádu a i v podadresáři, ale vše se stejným výsledkem. Log je prázdný. Používám Nette 0.9.2.

Bootstrap:

require LIBS_DIR . '/Nette/loader.php';

Debug::enable();

Environment::loadConfig();

$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;

$router = $application->getRouter();

Route::addStyle('lang', NULL);
Route::setStyleProperty('lang', Route::PATTERN, '[a-z0-9]{1,3}');

$router[] = new Route('index.php', array(
	'presenter' => 'Homepage',
	'action' => 'default',
        'lang' => 'cs',
), Route::ONE_WAY);

$router[] = new Route('<lang>/<action>/<id>', array(
	'presenter' => 'Homepage',
	'action' => 'default',
        'lang' => 'cs',
        'id' => NULL,
));

$application->run();

BasePresenter:

abstract class BasePresenter extends Presenter
{
        public static function getPersistentParams() {
            return array('lang');
        }

        public $lang;
	public $oldLayoutMode = FALSE;
        private $db;

        public function startup() {
            parent::startup();

            dibi::connect(Environment::getConfig('database'));
            dibi::query('SET NAMES UTF8');

            if (!isset($this->lang)) {
                $this->lang = $this->getHttpRequest()->detectLanguage(array('en','cs'));
                $this->canonicalize();
            }
            $this->template->lang = $this->lang;

            $user = new User;
            if ($user->isAuthenticated())
                $this->template->user = $user->getIdentity();
        }
}

Btw. na co slouží canonicalize()? Nikde jsem to nenašel.

Děkuji
Bernard

Aurielle
Člen | 1281
+
0
-

Nemáš nějakou roztrhanou adresářovou strukturu? # u odkazů značí neexistující presenter.

Bernard Williams
Člen | 207
+
0
-

Používám starou adresářovou strukturu:

app
\-presenters
  \-HomepagePresenter.php
\-templates
  \-@layout.phtml
  \-Homepage

Ale v té to asi nebude.. jinak by mi to nefungovalo ani na localhostu.

Editoval Bernard Williams (28. 12. 2009 13:58)

Aurielle
Člen | 1281
+
0
-

Taky používám starou strukturu a Nette 0.9.2… divné :/

Co se stane když aplikaci přepneš násilím do development módu?

Editoval gmvasek (28. 12. 2009 14:00)

sodae
Nette Evangelist | 250
+
0
-

nastav na ostrém vývojový mod a podívej se co ti to vyhodí za chybu

Bernard Williams
Člen | 207
+
0
-

Tak nakonec byl problém ve jménu šablony Default.phtml – stačilo přejmenovat na Default.phtml. Bohužel ani tak se mi aplikaci nepodařilo rozchodit. Úvodní stránka funguje, ale když kliknu na jakoukoliv jinou, tak se na stránce zobrazí chyba od Apache: „Internal Server Error“ a log na serveru je prázdný. Kde může být chyba? Nebo že bych měl špatně nastavený bootstrap.php a nelogoval mi chyba? Jak správně by měl vypadat?

redhead
Člen | 1313
+
0
-

Internal Server Error může být i od Nette, je to tam pod tím napsaný. Pokud je to od Nette, tak si pusť v development modu a uvidíš co ti laděnka řekne.

ji_ri_k
Člen | 44
+
0
-

Ahoj, nastav si na tom ostrém serveru debug mód pomocí:

Debug::enable(Debug::DEVELOPMENT);

Pak by se ti měla spustit laděnka a měl by si se dostat k chybě. Nemáš náhodou chyby v názvech souborů (velikost znaků)? Jestli vyvíjíš na windows a pak to spustíš někde na linuxu, může se to stát.

Bernard Williams
Člen | 207
+
0
-

Tak chyba byla v zakomentovaném řádku RewriteBase / v .htaccess a pak ve špatné konfiguraci bootstrap.php. Pak už mi laděnka řekla, že konečná chyba je ve velikosti prvního písmena v názvu šablony. Dobrý způsob jak zabít celý den.

Všem moc děkuji za pomoc!
Bernard