Modulova aplikace – asi nekde spatna routa

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

Zdravím.

Takže jsem si načrtl základní strukturu aplikace a jaxi taxi jsem se bloknul zřejmě na routovaní.

Pokud zadám adresu www.domena.cz nebo www.domena.cz/o-nas.html, tak by se mela provadet aplikace v adresáři user. To funguje dle nastavene routy v pohodě. Ale pokud zadám www.domena.cz/admin tak by se měla provádět aplikace v adresáři admin, zde je však problém a laděnka vyhazuje 404. Za adresarovou strukturou si stojim. Maximalne lze jeste hodit modululy v admin adresaři do složky admin/module/.

Předem dík za radu.

Příloha:
Soubor

zarubik
Člen | 31
+
0
-

Pokud chces pouzivat moduly, tak jmeno tridy presentera musis mit: One_DefaultPresenter
Pak ti to bude fungovat

webdata
Člen | 153
+
0
-

jj, dík jak fík, taky jsem se mohl líp podívat do example v distribuci.

Takže v DefaultPresenter.php teď mám:

class One_DefaultPresenter extends Presenter {

	public function renderDefault() {
		echo 'OneModule';
		$this->terminate();
	}

}

Takže když zadám www.domena.cz/admin tak to funguje v pohodě. Ale pokud se pokusím zavolat www.domena.cz/one.default tak laděnka hlásí No route for HTTP request.

Funguje to pouze pokud v ROOT adresáři aplikace v .htaccess přepsat:

RewriteBase /moduleskeleton

na

RewriteBase /moduleskeleton/admin/

Což je pro mne nepřípustné.

webdata
Člen | 153
+
0
-

Takže asi zřejmě vyřešeno přes .htaccess

# disable directory listing
Options -Indexes

# mod_rewrite
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /moduleskeleton/

	#  ADMINISTRACNI ROZHRANI
	RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^admin/(.*)$ admin/index.php/$1 [L]
	RewriteRule ^admin/$ admin/index.php [L]
	RewriteRule ^admin$ admin/index.php [L]

	# NORMALNÍ STRÁNKY
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Ale pokud má někdo jiné řešení, budu rád když se podělí.

westrem
Člen | 398
+
0
-

No staci jedine, postni sem ako mas definovane routy, moj tip – stavim sa, ze mas definovanych len par rout, kde kazda obsahuje v poli defaults parameter module definovany pre iny modul a nie admin.

Ono v tom pripade sa totiz routy spravaju inak ako by clovek cakal (neintuitivne) (David uz o tom probleme vie) a dany module v definicii beju ako restriction, takze sa ti nenapasuje ziadna routa.

Istotne to nie je potrebne riesit cez .htaccess podla mna.

webdata
Člen | 153
+
0
-

jj, pravdu díš, ty routy fungují nějak divně, bral jsem je jako regularni vyrazy v .htaccess, ale chovají se trosku jináč.

Jinak už mám hotový skeleton. Takže teď je to tak, že moduly jsou v adresáři modules. Kde každý modul má svuj model, presenter, templates, a nebo dědí presenter, model, templates z nadřazené složky.

Je to jen hrubý nástřel, ale pokud to někdo vezme jako základ, tak si myslím že to je použitelné. Já osobně to stejně ještě doupravím, podle obrazu svého, protože modulární aplikace je pro mne akutně důležitá (přehledná/pro práci v týmu dobrá) věc.

ModuleSkeleton.zip