Toon posts:

MVC, aparte views voor edit

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nu een tijdje bezig met een simpele MVC applicatie om wat dingen te testen. In een database tabel heb ik een aantal users die ik met een view op het scherm tover. Dat gaat allemaal goed via MVC-principes. Nu vraag ik me echter af wat "good practice" is voor het aantal views. Ik wil namelijk een lijst met alle users, een overzicht van 1 user en een scherm waarin ik 1 user kan bewerken. Ik zat dus te denken aan 3 views:

views/userViewAll
views/userViewOne
views/userViewEdit

Is het verstandig om dit zo op te zetten of kun je de edit mogelijkheid beter verwerken in userViewOne (of gaat dat tegen MVC principes in?)

Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Meerdere views is juist het voordeel van MVC. Dus een read-only view naast een edit view lijkt me prima.

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10 12:59
Inderdaad een prima oplossing en niet meer dan normaal, volgens mij. Het kan ook in één view met een beetje javascript, wat je een postback scheelt.

Acties:
  • 0 Henk 'm!

Verwijderd

Het is echt helemaal aan jezelf om te kiezen wat je nou eigenlijk beter vindt. Soms is het beter om bewerken en bekijken in eenzelfde view te hebben omdat het verder bijna hetzelfde is.

Echter, je moet rekening houden met de uitbreidbaarheid: misschien dat je over een jaar het bewerken compleet over de kop wil gooien terwijl het weergeven van data hetzelfde moet blijven. Vraag jezelf nu alvast af wat voor zo'n geval het makkelijkst is. :)

Acties:
  • 0 Henk 'm!

  • defcon84
  • Registratie: September 2009
  • Laatst online: 10-10 14:12

defcon84

Multipass?

Zeker een prima oplossing :)
alleen zou ik je acties(url) beetje aanpassen qua benaming..

bvb:
views/List
views/Detail
views/Edit

komt mooier over vind ik :p

Acties:
  • 0 Henk 'm!

Verwijderd

Eventueel zou je gebruik kunnen maken van een soort van sub-view die alleen getoond wordt als bepaalde condities bestaan maar dan mis je de 'geen logica in views' plank enigszins mis, al is er iets te zeggen voor view-logica en applicatie-logica.

Zolang je geen views direct aan actions koppelt (dus: user/view zou dan altijd /views/user/view.tpl gebruiken) en het dus mogelijk maakt om vanuit de controller nog een view te kiezen lijkt het me geen echte issue om meer views te gebruiken.

BTW ... je geeft aan een lijst weer te willen geven, maar ook een enkele user... ik neem aan dat dit ook losse actions zijn ?

[ Voor 11% gewijzigd door Verwijderd op 23-07-2010 10:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja de lijst bevat niet alle informatie over een user. Alle details zie je pas als je een user te opent, er wordt dan een ID mee gegeven waardoor de controller userDetail (1 user) opent ipv userList (alles).

Acties:
  • 0 Henk 'm!

Verwijderd

Dan heb je gewoon een goede opzet die makkelijjk aan te passen is. View en Edit actions zijn toch echt veschillende dingen en hebben dus ook een andere view nodig. Vooral als je later besluit een activerecord implementatie te gaan gebruiken of dingen als form generators/widgets kun je dan alle kanten nog op zonder teveel logica in je views te hebben.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
defcon84 schreef op vrijdag 23 juli 2010 @ 10:12:
Zeker een prima oplossing :)
alleen zou ik je acties(url) beetje aanpassen qua benaming..

bvb:
views/List
views/Detail
views/Edit

komt mooier over vind ik :p
views/user/list
views/user/detail
views/user/edit

lijkt me logischer? Denk dat je dat bedoelde ;)

Je kunt gaan klooien door al die views in één template te definieren en bijvoorbeeld formuliervelden laten zien dmv Javascript als je op een knop drukt, maar dan voeg je eigenlijk onnodige complexiteit toe aan je views, en heb je weer meer onderhoud aan een extra taal (Javascript), extra code in je template, etc. Hou het maar lekker simpel.

Acties:
  • 0 Henk 'm!

  • defcon84
  • Registratie: September 2009
  • Laatst online: 10-10 14:12

defcon84

Multipass?

ja natuurlijk :)
ik dacht dat ik gewoon user/* had staan :p
die views zou ik weglaten btw :p

gewoon user/list enz. :p

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11-10 22:33

Guldan

Thee-Nerd

@yopy en defcon84

Ik denk dat jij (defcon84) bedoelt dat de url www.test.nl/users/list moet worden. En ik denk dat yopy het heeft over de mappen indeling in het mvc project. In asp.net MVC heb je namelijk wel een mapje views per controller. Het resultaat is echter wel hetzelfde (dus de url wordt test.nl/users/list

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik me nog wel afvraag is wat het nut is van een aparte "Edit" en "Nieuw" view. De edit en nieuw views zijn vrijwel identiek, met het verschil dat in de Edit-view al data zit. In een aantal tutorials vind ik hiervoor twee aparte views, dat lijkt me niet echt handig ivm code duplicatie.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 11:06
Verwijderd schreef op vrijdag 23 juli 2010 @ 16:26:
Wat ik me nog wel afvraag is wat het nut is van een aparte "Edit" en "Nieuw" view. De edit en nieuw views zijn vrijwel identiek, met het verschil dat in de Edit-view al data zit. In een aantal tutorials vind ik hiervoor twee aparte views, dat lijkt me niet echt handig ivm code duplicatie.
Dat ligt er natuurlijk maar helemaal aan.
Misschien is het de bedoeling dat je bepaalde waarden alleen kunt toewijzen wanneer je "het" aanmaakt en dat je ze nooit meer mag wijzigen.

Acties:
  • 0 Henk 'm!

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 10-10 17:10

japaveh

Jield BV

^^ met hem,

Bovendien heb je voor new en edit ook vaak verschillende teksten en kopjes. Dit wil je ook graag in een verschillende view-file hebben. In het Zend Framework kun je dan bijvoorbeeld 1 enkel form maken en deze gebruiken voor beide views.

Solo Database: Online electronic logbook and database system for research applications


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
japaveh schreef op vrijdag 23 juli 2010 @ 19:16:
^^ met hem,

Bovendien heb je voor new en edit ook vaak verschillende teksten en kopjes. Dit wil je ook graag in een verschillende view-file hebben. In het Zend Framework kun je dan bijvoorbeeld 1 enkel form maken en deze gebruiken voor beide views.
Dat dus en dan optioneel velden enabled/disablen in de view. In de edit-mode wil je bijvoorbeeld het ID van een entry wel zien (maar niet bewerken), terwijl het ID bij de add-mode nog niet beschikbaar is (want bijvoorbeeld auto-increment).

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 08-10 07:49
Ik werk met Ruby on Rails, daarbij heb je standaard de views: new, edit show, index. Die benaming vind ik ook wel logisch. Je kan zelf extra views bijmaken. Naast de controller specifieke views heb je shared views. Deze kan je hergebruiken. Hier zet ik bijvoorbeeld een formulier in (alles binnen de <form> tags). Die include je in de new en edit view.
Pagina: 1