Re: More thoughts on Forge->Formo conversion
Chad Kieffer <[email protected]> Fri, 26 Apr 2013 12:39:06 -0600
| Newsgroups | gmane.comp.web.gallery.devel |
|---|---|
| Message-ID | <[email protected]> |
--===============8569396820029793526== Content-Type: multipart/alternative; boundary=Apple-Mail-A1CDA034-BDDF-4DD4-8D11-05E7B9CD7CC2 Content-Transfer-Encoding: 7bit --Apple-Mail-A1CDA034-BDDF-4DD4-8D11-05E7B9CD7CC2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable +1 from me, too. For clarity, will separate action routes be kept or will ad= d/edit be replaced with something like save? On Apr 24, 2013, at 10:42 AM, Bharat Mediratta <[email protected]> wrote: >=20 > Fantastic. I never liked the way we had this split up before so it's nice= to see that Formo can streamline it for us. >=20 > I've also never been happy with our form/{add,edit}/ routing - that was a f= ramework put in place before it was clear what the true need would be and it= 's only used in 9 places. I'd be happy to see that routing go away and let e= ach controller do it in a more ad hoc approach. Take a look at that while y= ou're in there and let me know what you think. >=20 > -Bharat >=20 >=20 > On Wed, Apr 24, 2013 at 1:13 AM, Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> wrote: >> Hey everyone, >>=20 >> I'm working on getting acquainted with Formo a bit more, and it seems lik= e the default, expected actions of Formo is a bit different than how we were= using Forge in Gallery 3.0.x. >>=20 >> Before, we usually (but not always) had a separate controller action for s= howing a form vs. validating a form (e.g. action_edit() and action_save()). = Also, it was common to have a third function generate the form for us, so w= e ended handling the form in three places. >>=20 >> It seems that the default, expected behavior of Formo is to do this in on= e place with one action. It's smart enough to figure out if we have post da= ta or not, and therefore if we are in "edit" or "save" mode (following the e= xample). An example: >>=20 >> public function action_edit() { >> $form =3D Formo::form(...) >> ->....; // build form, load with default values. >>=20 >> if ($form->load()->validate()) { >> // load() gets the values from post/files and fills the values, >> // then validate() checks stuff and does nothing if the form isn't >> // yet sent (nothing loaded) or adds errors if it was. >>=20 >> // Do some more stuff... then: >> Message::success(t("Done!")); >> // And/or: >> $this->redirect("somewhere/else"); >> } >> =20 >> $view =3D .....; >> $view->form =3D $form; >>=20 >> $this->response->body($view); >> } >>=20 >> I can overload a couple Formo classes to ensure that each form contains a= nd validates our csrf, similar to what we did with Forge. >>=20 >> Does this seem like a reasonable approach? Is there some other reason wh= y we intentionally divided these up into multiple actions before? >>=20 >> Take care, >> Shad >>=20 >> -------------------------------------------------------------------------= ----- >> Try New Relic Now & We'll Send You this Cool Shirt >> New Relic is the only SaaS-based application performance monitoring servi= ce >> that delivers powerful full stack analytics. Optimize and monitor your >> browser, app, & servers with just a few lines of code. Try New Relic >> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_ap= r >> __[ g a l l e r y - d e v e l ]_________________________ >>=20 >> [ list info/archive --> http://gallery.sf.net/lists.php ] >> [ gallery info/FAQ/download --> http://gallery.sf.net ] >=20 > --------------------------------------------------------------------------= ---- > Try New Relic Now & We'll Send You this Cool Shirt > New Relic is the only SaaS-based application performance monitoring servic= e=20 > that delivers powerful full stack analytics. Optimize and monitor your > browser, app, & servers with just a few lines of code. Try New Relic > and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr= > __[ g a l l e r y - d e v e l ]_________________________ >=20 > [ list info/archive --> http://gallery.sf.net/lists.php ] > [ gallery info/FAQ/download --> http://gallery.sf.net ] --Apple-Mail-A1CDA034-BDDF-4DD4-8D11-05E7B9CD7CC2 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D= utf-8"></head><body dir=3D"auto"><div>+1 from me, too. For clarity, will sep= arate action routes be kept or will add/edit be replaced with something like= save?</div><div><br>On Apr 24, 2013, at 10:42 AM, Bharat Mediratta <<a h= ref=3D"mailto:[email protected]">[email protected]</a>> wrote:<br><br><= /div><div><span></span></div><blockquote type=3D"cite"><div><div dir=3D"ltr"= ><br><div style=3D"">Fantastic. I never liked the way we had this spli= t up before so it's nice to see that Formo can streamline it for us.</div><d= iv style=3D""><br></div><div style=3D"">I've also never been happy with our f= orm/{add,edit}/ routing - that was a framework put in place before it was cl= ear what the true need would be and it's only used in 9 places. I'd be= happy to see that routing go away and let each controller do it in a more a= d hoc approach. Take a look at that while you're in there and let me k= now what you think.</div> <div style=3D""><br></div><div style=3D"">-Bharat</div></div><div class=3D"g= mail_extra"><br><br><div class=3D"gmail_quote">On Wed, Apr 24, 2013 at 1:13 A= M, Shad Laws <span dir=3D"ltr"><<a href=3D"mailto:shad-xpYdmXCiSuZWk0Htik3J/[email protected]" targ= et=3D"_blank">shad-xpYdmXCiSuZWk0Htik3J/[email protected]</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex"><div dir=3D"ltr">Hey everyone,<div><br></div><= div>I'm working on getting acquainted with Formo a bit more, and it seems li= ke the default, expected actions of Formo is a bit different than how we wer= e using Forge in Gallery 3.0.x.</div> <div><br></div><div>Before, we usually (but not always) had a separate contr= oller action for showing a form vs. validating a form (e.g. action_edit() an= d action_save()). Also, it was common to have a third function generat= e the form for us, so we ended handling the form in three places.</div> <div><br></div><div>It seems that the default, expected behavior of Formo is= to do this in one place with one action. It's smart enough to figure o= ut if we have post data or not, and therefore if we are in "edit" or "save" m= ode (following the example). An example:</div> <div><br></div><div><font face=3D"courier new, monospace">public function ac= tion_edit() {</font></div><div><font face=3D"courier new, monospace"> $= form =3D Formo::form(...)</font></div><div><font face=3D"courier new, monosp= ace"> ->....; // build form, load with d= efault values.</font></div> <div><font face=3D"courier new, monospace"><br></font></div><div><font face=3D= "courier new, monospace"> if ($form->load()->validate()) {</font= ></div><div><font face=3D"courier new, monospace"> // load() ge= ts the values from post/files and fills the values,</font></div> <div><font face=3D"courier new, monospace"> // then validate() c= hecks stuff and does nothing if the form isn't</font></div><div><font face=3D= "courier new, monospace"> // yet sent (nothing loaded) or adds e= rrors if it was.</font></div> <div><font face=3D"courier new, monospace"><br></font></div><div><font face=3D= "courier new, monospace"> // Do some more stuff... then:</font>= </div><div><font face=3D"courier new, monospace"> Message:= :success(t("Done!"));</font></div> <div><font face=3D"courier new, monospace"> // And/or:</font></= div><div><font face=3D"courier new, monospace"> $this->redir= ect("somewhere/else");</font></div><div><font face=3D"courier new, monospace= "> }</font></div> <div><font face=3D"courier new, monospace"> </font></div><div><fo= nt face=3D"courier new, monospace"> $view =3D .....;</font></div><div>= <font face=3D"courier new, monospace"> $view->form =3D $form;</font= ></div> <div><font face=3D"courier new, monospace"><br></font></div><div><font face=3D= "courier new, monospace"> $this->response->body($view);</font></= div><div><font face=3D"courier new, monospace">}</font></div> <div><br></div><div>I can overload a couple Formo classes to ensure that eac= h form contains and validates our csrf, similar to what we did with Forge.<b= r></div><div><br></div><div>Does this seem like a reasonable approach?  = ;Is there some other reason why we intentionally divided these up into multi= ple actions before?</div> <div><br></div><div>Take care,</div><div>Shad</div></div> <br>------------------------------------------------------------------------= ------<br> Try New Relic Now & We'll Send You this Cool Shirt<br> New Relic is the only SaaS-based application performance monitoring service<= br> that delivers powerful full stack analytics. Optimize and monitor your<br> browser, app, & servers with just a few lines of code. Try New Relic<br>= and get this awesome Nerd Life shirt! <a href=3D"http://p.sf.net/sfu/newreli= c_d2d_apr" target=3D"_blank">http://p.sf.net/sfu/newrelic_d2d_apr</a><br>__[= g a l l e r y - d e v e l ]_________________________<br> <br> [ list info/archive --> <a href=3D"http://gallery.sf.net/lists.php" targe= t=3D"_blank">http://gallery.sf.net/lists.php</a> ]<br> [ gallery info/FAQ/download --> <a href=3D"http://gallery.sf.net" target=3D= "_blank">http://gallery.sf.net</a> ]<br></blockquote></div><br></div> </div></blockquote><blockquote type=3D"cite"><div><span>--------------------= ----------------------------------------------------------</span><br><span>T= ry New Relic Now & We'll Send You this Cool Shirt</span><br><span>New Re= lic is the only SaaS-based application performance monitoring service </span= ><br><span>that delivers powerful full stack analytics. Optimize and monitor= your</span><br><span>browser, app, & servers with just a few lines of c= ode. Try New Relic</span><br><span>and get this awesome Nerd Life shirt! <a h= ref=3D"http://p.sf.net/sfu/newrelic_d2d_apr">http://p.sf.net/sfu/newrelic_d2= d_apr</a></span></div></blockquote><blockquote type=3D"cite"><div><span>__[ g= a l l e r y - d e v e l ]_________________________</span><br><span></span><= br><span>[ list info/archive --> <a href=3D"http://gallery.sf.net/lists.p= hp">http://gallery.sf.net/lists.php</a> ]</span><br><span>[ gallery info/FAQ= /download --> <a href=3D"http://gallery.sf.net">http://gallery.sf.net</a>= ]</span></div></blockquote></body></html>= --Apple-Mail-A1CDA034-BDDF-4DD4-8D11-05E7B9CD7CC2-- --===============8569396820029793526== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr --===============8569396820029793526== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline __[ g a l l e r y - d e v e l ]_________________________ [ list info/archive --> http://gallery.sf.net/lists.php ] [ gallery info/FAQ/download --> http://gallery.sf.net ] --===============8569396820029793526==--