Mam taki problem jak to najprościej zrobić a mianowicie, żeby zrobić nowy styl i każdy użytkownik będzie mógł sobie wybrać styl.
Style przechowuje w katalogu /public ale też trzeba będzie zmodyfikować cały katalog /views bo tam jest cały html i teraz mam jest to /views/seach , views/main , views/setting i ja sobie mysle, żeby to tak zrobić dwa style to by było /views/styl1/seach , views/styl1/main , views/styl1/setting i /views/styl2/seach , views/styl2/main , views/styl2/setting i oczywiście inny styl w katalogu /public/styles/styl1.css , /public/styles/styl2.css , oczywiśc w bazie danych będzie pole o nazwie styl i będzie miało wartośc albo styl1 albo styl2 i teraz mam pytanie czy laravel ma w sobie jakies wbudowane mechanizmy, które to proście zrobią ?
- Rejestracja:ponad 3 lata
- Ostatnio:2 dni
- Postów:185

- Rejestracja:prawie 15 lat
- Ostatnio:około 8 godzin
- Lokalizacja:Laska, z Polski
- Postów:10081
Nie kojarzę nic takiego, ale myślę że dosyć prosto da się to zrobić. Podejrzewam że raczej nie chcesz na prawdę dać możliwości użytkownikom edycji styli (layout, pozycjonowanie, układ, flexbox, marginesy, etc.) tylko prawdopodobnie chcesz dać im możliwość ustawienia kilku kluczowych wartości (jak kolor, tło, może wielkość fontu). Jeśli tak, to ustaw w bazie tylko wartości tych rzeczy których chcesz zmienić, a następnie "przekaż" informacje o wartościach tych pól z backendu do widoku. Jednym z fajniejszych sposobów w jaki możesz to zrobić to zmienne css, ale są też inne sposoby w jaki możesz to zrobić. Mogłoby to wyglądać mniej więcej tak:
$selectedCssColor = auth()->check() ? 'blue' : 'red';
$customStyles = "
::root {
--user-color: $selectedCssColor
}";
return view('page', ['customStyles' => $customStyles]);
<style>{!! $customStyles !!}</style>
<header>
<a class="link">Link</a>
</header>
a.link {
color: var(--user-color);
}
Pamiętaj że $selectedCssColor
powinien się znajdować poprawny CSS, gdyby znalazło się tam coś co pochodzi prosto od użytkownika, wystawiasz się na XSS.
- Rejestracja:ponad 13 lat
- Ostatnio:około 19 godzin
- Postów:433
@tomixtomi0001 - w zasadzie pomysł, który opisał @Riddle tylko tutaj bym dodał, że jeżeli OPRÓCZ styli chcesz jeszcze aby układ strony był inny to po prostu do widoków przekazuj odpowiednią ścieżkę (zakładając, że zrobisz sobie tak jak napisałeś DWA różne rodzaje widoków).
Czyli:
$userTheme = 'theme_a'; // tu sobie podstawiasz ścieżkę do swojego theme
return view($userTheme.'.home_page');
Jeżeli jednak zmiana stylu dotyczyć będzie TYLKO styli (czyli kolorowania) to prościej będzie przekazywać nazwę pliku CSS do layouta głównego i taki właśnie plik ładować przy renderowaniu strony.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.