Verschillende bericht types met behulp van 1 class in Laravel
Jorn Reed
20/03/2020 17:06:58Hoi,
Ik ben nu weer wat nieuws aan het proberen in Laravel, flexibele content, het hoeft niet heel erg ingewikkeld te zijn dus maak ik het zelf, zonder gebruik te maken van een library ofzo.
Ik wil een pagina waarop de gebruiker, zelf de indeling van de pagina kan bepalen. Ik wil dus dat die persoon uit 3 bericht types kan kiezen. Bericht, Video of Afbeelding gallerij.
Elk bericht type heeft zijn eigen data velden. Een normaal bericht bijvoorbeeld een titel en beschrijving. Video alleen een video url. Een gallerij, meerdere afbeelding urls, misschien nog met een oneToMany relatie met een afbeeldingen tabel.
Ik wil dus dat alle verschillende velden in de juiste volgorde van wanneer ze zijn opgeslagen getoond worden op de pagina, door iets als dit toe te passen:
Ik denk dat dit wel mogelijk is om 1 algemene berichten model te maken en per bericht type een model, en veel gebruik te maken van OneToMany relaties, maar ik heb nog niet echt een idee, hoe ik het met elkaar zou kunnen combineren in de database structuur.
Heeft iemand enig idee?
Ik ben nu weer wat nieuws aan het proberen in Laravel, flexibele content, het hoeft niet heel erg ingewikkeld te zijn dus maak ik het zelf, zonder gebruik te maken van een library ofzo.
Ik wil een pagina waarop de gebruiker, zelf de indeling van de pagina kan bepalen. Ik wil dus dat die persoon uit 3 bericht types kan kiezen. Bericht, Video of Afbeelding gallerij.
Elk bericht type heeft zijn eigen data velden. Een normaal bericht bijvoorbeeld een titel en beschrijving. Video alleen een video url. Een gallerij, meerdere afbeelding urls, misschien nog met een oneToMany relatie met een afbeeldingen tabel.
Ik wil dus dat alle verschillende velden in de juiste volgorde van wanneer ze zijn opgeslagen getoond worden op de pagina, door iets als dit toe te passen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
@foreach($fields as $field)
@switch($field->type)
@case('video')
<iframe src="{{$field->video_url}}">
@case('post')
<h2>{{$field->title}}</h2>
<p>{{$field->content}}</p>
@case('gallery')
@foreach($field->gallery as $img)
<img src="{{$img->url}}">
@endforeach
@endswitch
@endforeach
@switch($field->type)
@case('video')
<iframe src="{{$field->video_url}}">
@case('post')
<h2>{{$field->title}}</h2>
<p>{{$field->content}}</p>
@case('gallery')
@foreach($field->gallery as $img)
<img src="{{$img->url}}">
@endforeach
@endswitch
@endforeach
Ik denk dat dit wel mogelijk is om 1 algemene berichten model te maken en per bericht type een model, en veel gebruik te maken van OneToMany relaties, maar ik heb nog niet echt een idee, hoe ik het met elkaar zou kunnen combineren in de database structuur.
Heeft iemand enig idee?
PHP hulp
05/11/2024 11:33:35Frank Nietbelangrijk
20/03/2020 17:49:17Betreft de database structuur heb je meestal twee opties:
- één tabel met kolommen die voor sommige types niet zult gebruiken en die dan dus ook nullable moeten zijn.
- voor ieder type een aparte tabel.
Wanneer je voor de tweede optie kiest zul je in jouw geval het sorteren van de berichten in PHP moeten oplossen. Ik zou voor de eerste kiezen.
- één tabel met kolommen die voor sommige types niet zult gebruiken en die dan dus ook nullable moeten zijn.
- voor ieder type een aparte tabel.
Wanneer je voor de tweede optie kiest zul je in jouw geval het sorteren van de berichten in PHP moeten oplossen. Ik zou voor de eerste kiezen.