Více frontendů jeden backend (GIT)
- MiskynsCZ
- Člen | 14
Zdravíčko vzhledem k tomu, že backend je napsaný v nette a teoreticky mi ani na stackoverflow nepomohli, tak jsem vám chtěl položit otázky.
Mám backend, který obsahuje kompletně celou aplikaci od Nette v sobě
obsahuje AdminModule a FrontendModule,
AdminModule je všude stejný, protože ho chceme mít sjednocený, ale
FrontendModule je pro každého klienta jiný.
Chtěl jsem se právě zeptat, že když máme repozitář pro každého klienta
zvlášť, tak jak máme vyřešit aktualizaci Backendu? Bez toho aniž by se
FrontendModule přepsal? Protože nechceme to stylovat znovu?
Potýkali jste se s něčím takovým už někdy? Řešíme to už minimálně 4 dny a pořád nás nic nenapadá, byl bych rád za každou radu, předem děkuji ;)
- Šaman
- Člen | 2667
Jestli používáte GIT, nepomohl by patch
? https://www.devroom.io/…ch-with-git/
Zkušenosti s ním nemám, ale myslím, že by to mohlo být ono.
- MiskynsCZ
- Člen | 14
David Matějka napsal(a):
admin (a dalsi sdilene casti) jako composer balicek/balicky
Takže mám tu nette strukturu jako je
- app
- log
- temp
- vendor
- www
Rozdělit na samostatné balíčky? Které potom composerem budu stahovat? A jak se to řeší když to app/ přidám FrontendModul nepřepíše se?
- David Matějka
- Moderator | 6445
no ta struktura aplikace bude i poté takováhle. ale přesuneš moduly a další společný kód (z app) do vendoru
- Kamil Valenta
- Člen | 832
AdminModule můžeš udržovat jako samostatný repozitář a samostatný projekt v IDE. Když se pak bude dělat build pro zákazníka, spojíš mu Front a Admin.
- galab
- Backer | 74
@DavidMatějka nevím, zda to bylo na mne, ale tímto způsobem
máme:
domena.com – Front
admin.domena.com – Admin
api.domena.com – API
tím máme 3 appky nezávislé – ano je nevýhoda mít 2× komponenty pro
front a admin, ale zase nám to umožňuje psát specifické rozšíření pro
jednotlivé klienty, ale zároveň udržovat to Core aktuální pro vše
A pro klienty, kteří si myslí, že PHP je mrtvé (viz vedlejší vlákno), nabídneme jim super hype JS frontend framework
Editoval galab (25. 4. 2019 21:21)
- Václav Pávek
- Backer | 102
galab napsal(a):
@DavidMatějka nevím, zda to bylo na mne, ale tímto způsobem máme:
domena.com – Front
admin.domena.com – Admin
api.domena.com – API
tím máme 3 appky nezávislé – ano je nevýhoda mít 2× komponenty pro front a admin, ale zase nám to umožňuje psát specifické rozšíření pro jednotlivé klienty, ale zároveň udržovat to Core aktuální pro všeA pro klienty, kteří si myslí, že PHP je mrtvé (viz vedlejší vlákno), nabídneme jim super hype JS frontend framework
Ty domény mají společný document root (jedná se o alias) nebo každá
doména má vlastní document root?
Jinak nejlepší řešení pro společný kód je opravdu použít composer
balíčky + si případně pohrát s PresenterFactory.
- MiskynsCZ
- Člen | 14
Tak jak to tak vidím, tak je asi fakt nejlepší využít ten composer, akorát ještě otázečka jestli nemůžete náhodou sepsat jak to udělat jak dostat ten AdminModule do composeru, včetně modelů atd… A jak pak nastavit že budu moct měnit jenom Frontend bez zásahu do pozadí, jinak ve frontendu mám klasicky presentery a templaty.
Předem děkuji moc za odpověď.
- Phalanx
- Člen | 310
Mrkni sem:
https://forum.nette.org/…elnem-modulu#…
Bude ti nejspíš stačit jen první část odpovědi (bez nutnosti vytvářet vlastní extension).
Pro ukázku jak to funguje např. grid od Matouše:
https://github.com/mesour/DataGrid
složka src je nalinkovaná composerem z composer.json
- MiskynsCZ
- Člen | 14
Phalanx napsal(a):
Mrkni sem:
https://forum.nette.org/…elnem-modulu#…Bude ti nejspíš stačit jen první část odpovědi (bez nutnosti vytvářet vlastní extension).
Pro ukázku jak to funguje např. grid od Matouše:
https://github.com/mesour/DataGridsložka src je nalinkovaná composerem z composer.json
Super tak na to dneska doma kouknu a zkusím to tak udělat, jenom malá otázečka, když bude AdminModule presentery, templaty a potom models, jak z toho vendoru rozpozná že mimo vendor je složka Frontend (další modul) a má se načítat z toho? V router factory nebo v configu?
- Phalanx
- Člen | 310
Budeš například přidávat presenter
vendor/tvoje-knihovna/src/AdminModule/Presenters/AbcPresenter.php
To znamená, že musíš udělat:
composer dump
(aby se ti načetl automaticky)- nastavit si, odkud načítat layout – například v beforeRender is
nastavíš přes
$this->setLayout('/app/FrontModule/...');
- zachrdlapetr
- Člen | 49
Nevím jestli to pro vás nebude moc velká haluz, ale my jsme to řešívali pomocí htaccess, kde jsme vynutili společnou část pro backend. To znamená, že každý klient měl svoji /app/backend/ pokud se v backendu dělaly individuální změny, ale když jsme jim chtěli dát obecnou, tak se použil htaccess a nezáleželo na tom, kdy se přenese obecná změna k jednotlivým klientům, protože změnou společného backendu se to vyřešilo najednou pro všechny zákazníky používající společný backend. Frontend tím zůstal nedotknutý.
php_value include_path /spolecny/app/backend/:/app/backend/
- David Matějka
- Moderator | 6445
To, kde bude nette hledat presentery (v jakém namespace), tak to záleží na presenter factory, respektive mappingu, který můžeš nastavit v neonu: https://doc.nette.org/cs/configuring#…
- MiskynsCZ
- Člen | 14
Ouki, díky moc všem za rady! Akorát jenom upřesnění, takže když budu mít celou část app ve vendoru a poté si nastavím mapping, tak AdminModule se mi vyhledá ve vendoru a Frontend třeba v té složce FrontendModule který bude mimo vendoru, takže struktura bude vypadat takto.
Struktura
- FrontendModule
- vendor
- název balíčku
- app…
- název balíčku
- www
- config
Mám pravdu?
- tomat
- Člen | 16
Já bych to rozdělil tak, abych měl celý projekt jako jeden repozitář a
pak frontModule
a adminModule
jako další samostatné
repozitáře. V composeru pak přidat cesty k front/admin modulům. Každý
klient bude mít nainstalovaný hlavní projekt a v composeru se mu upraví jen
cesta k jeho konkrétnímu frontModule a cesta k adminModule bude vždy
stejná.
Pokud nemáš vlastní packagist, lze načíst repozitář napřímo:
"require": {
"muj_projekt/frontModule": "dev-master",
},
"repositories": [
{
"type": "vcs",
"url": "git@gitlab.com:muj_projekt.git"
}
],
Sice budeš mít ve výchozím chování moduly v
/vendor/muj_projekt/frontModule
, ale i toto lze upravit aby se ti
načetli i přes composer do /app/frontModule