Více domén nad jednou aplikací

- RedAlert
 - Člen | 4
 
Pohrávám si s myšlenkou, že na jedné aplikaci budu mít víc velice jednoduchých prezentací, protože nechci každou prezentaci nasazovat, dělat Xkrát stejný update, stejný fix, atd…
Případ, kdy by byly jednotlivé prezentace uložené v DB, jsem rovnou odepsal, protože chci mít přístup k plně funkčnímu Latte bez hackování Nette.
Jako další řešení se jeví projektově specifické šablony, například
templates/Homepage-chlast-cz, templates/Homepage-slast-cz, atd..
Zde ale tápám už v Routeru, který by asi měl předat presenteru parametr
o doméně a dál by měl presenter asi přenastavit složku s šablonami.
Nebo nějak úplně jinak. Poradí mi prosím někdo jak na to?
Případně pokud je i předchozí řešení kravina, napadá vás jiné řešení?

- RedAlert
 - Člen | 4
 
Na něco jsem přišel, ale nejsem si jistý, jestli to není prasečina:
class HomepagePresenter extends BasePresenter
{
	public function startup()
	{
		parent::startup();
		$host = Strings::webalize($this->getHttpRequest()->getUrl()->getHost());
		$this->template->setFile(__DIR__ . "/templates/Homepage-$host/{$this->action}.latte");
	}
}
				
- Šaman
 - Člen | 2668
 
Šablona se hledá pomocí metody formatTemplateFiles. Přetěž si ji v BasePresenteru (nebo v jiném) dle libosti. Do startupu to nepatří, i když to fungovat bude taky.
Editoval Šaman (3. 1. 2018 1:27)

- GEpic
 - Člen | 566
 
Nápad dobrý – ale nedělal bych to. Už jen proto že není dobré updatovat weby, které jedou a není tam vyloženě nějaká bezpečnostní díra. Na druhou stranu – pokud budeš mít díru v tomto tak to odskáčou všechny weby, sváže ti to ruce v případě individuálních úprav a budeš v tom mít nepořádek (a možná i o něco horší debugging). Radši si vem od klienta větší paušální poplatek ať se ti zaplatí hosting a budeš mít všude aplikaci včetně vendoru solo.
Editoval GEpic (3. 1. 2018 9:02)

- RedAlert
 - Člen | 4
 
Paráda, @Šamane, to je přesně to, co jsem hledal! Když jsem procházel dostupné metody, nepochopil jsem, že tato k tomu slouží.
Weby budou opravdu jenom základní prezentace s formulářem na kontaktování a pak hlavně statický obsah s absolutním zákazem individualit. V tomto případě si můžu dovolit tuto variantu.
Nastal ale ještě jeden problém. A to nastavení rout. Chci mít jednu Master doménu, která bude mít klasický router, který by směřoval na všechny presentery a pak mnoho Slave domén, které budou směřovat na jeden presenter. Sesmolil jsem něco takovéhoto, ale nefunguje to.
$router[] = new Route('//<host>/<presenter>/<action>[/<id>]', [
	'presenter' => 'Homepage',
	'action' => 'default',
	NULL => [
		Route::FILTER_IN => function (array $params) {
			if ($params['host'] !== 'master.tld') {
				return NULL;
			}
			return $params;
		},
		Route::FILTER_OUT => function (array $params) {
			if (!isset($params['host'])) {
				return $params;
			}
			if ($params['host'] !== 'master.tld') {
				return NULL;
			}
			return $params;
		}
	]
]);
$router[] = new Route('<action>[/<id>]', 'Slave:default');