As I said, Lift has semantically similar validation to Zend. At this point, all my implementations have been explicitly overriding validations in Mapped*. One could, if one wants, implement these as traits as well. Do you have any questions about this?
philip wrote: > Hi David, > > I don't understand the Liftweb side of validation yet, will look into > that longer email discussion later today. > > About PHP, I don't like it as a language, which it is effective for > the outcome but not a pleasure to be doing. > > About Zend Form, It has a concept of validators which you add to form > elements. > $element->addValidator(new Zend_Validate_Alnum()); > http://framework.zend.com/manual/en/zend.validate.html > http://framework.zend.com/manual/en/zend.validate.set.html > http://framework.zend.com/manual/en/zend.validate.validator_chains.html > http://framework.zend.com/manual/en/zend.validate.writing_validators.html > > Also decorators are a kind of wrapper form form elements which are > stacked to add some html to them. > http://framework.zend.com/manual/en/zend.form.standardDecorators.html > http://framework.zend.com/manual/en/zend.form.decorators.html > So if you wrap a form element with Zend_Form_Decorator_DtDdWrapper you > get > <dt></dt> > <dd><fieldset id="subform"> > <legend>User Information</legend> > ...(form element here) > </fieldset></dd> > > In Scala you have traits, maybe a decorator could be a trait since > traits are stackable where the order of with statements is important. > Something like this? > new StringInput with DtDdDecorator with SomeOtherDecorator. > > Philip > > On Sep 23, 8:10 pm, "David Pollak" <[EMAIL PROTECTED]> > wrote: > >> On Mon, Sep 22, 2008 at 9:28 PM, philip <[EMAIL PROTECTED]> wrote: >> >> >>> Hi Thnx, >>> >>> I think the validation is important as mostly a web app that I would >>> build is forms, validation, database. >>> >>> I generally use PHP Zend Framework due to the ability to outsource >>> some work to reduce my workload as PHP programmers are cheap. >>> You could take some ideas from its validation and form decorators. >>> >> I just looked at the Zend form stuff. Semantically, it looks a whole lot >> like the Lift stuff, except Lift doesn't have the Conditional. >> >> >> >> >> >> >>> However I can tell that Liftweb will increase my productivity much >>> more so maybe it won't be necessary to get outsourced work for this >>> part of website development. >>> >>> Thanks, Philip >>> >>> On Sep 22, 10:26 pm, Marius <[EMAIL PROTECTED]> wrote: >>> >>>> On Sep 22, 3:28 pm, philip <[EMAIL PROTECTED]> wrote: >>>> >>>>> Hi Marius, >>>>> >>>>> Thanks for the great replys, I'll just focus on one area. >>>>> >>>>> About the validation error messages, I mean more specifically can I >>>>> have the error messages for each <input on the form. >>>>> For example if someone types a phone number incorrect, but perhaps I >>>>> have 10 fields in my form, I want the phone number to have a error >>>>> message next to it. Also they got the post code wrong, so I need a >>>>> error message next to it as well. >>>>> >>>> See David's reply. Form validations is virtually non existent in lift >>>> yet but hopefully soon enough. There is ongoing work in this area. >>>> >>>>> As I understand it, all error messages are lumped together into the >>>>> one div and shown. >>>>> >>>> The lift:msg built in snippet work based on id and you can associate >>>> messages with id-s (see my example). lift:msgs renderes generic >>>> messages that are not associated with any id. >>>> >>>>>> 1. How can I put validation error messages next to the fields >>>>>> themselves? >>>>>> >>>>> Please see notices/error/warnings. For instance S.error("msgid", "an >>>>> error") and int your page you can put: >>>>> <lift:msg id="msgid" errorClass="error_class" >>>>> warningClass="warning_class"/> anywhere ... probably near by your >>>>> form field. >>>>> >>>>> Thanks, Philip >>>>> >>>>> On Sep 22, 5:08 pm, Marius <[EMAIL PROTECTED]> wrote: >>>>> >>>>>> On Sep 22, 9:13 am, philip <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have some questions as I have been developing and reading >>>>>>> >>> examples. >>> >>>>>>> 1. How can I put validation error messages next to the fields >>>>>>> themselves? >>>>>>> >>>>>> Please see notices/error/warnings. For instance S.error("msgid", "an >>>>>> error") and int your page you can put: >>>>>> >>>>>> <lift:msg id="msgid" errorClass="error_class" >>>>>> warningClass="warning_class"/> anywhere ... probably near by your >>>>>> form field. >>>>>> >>>>>>> 2. Is there any example of use of the controller directory, I saw >>>>>>> >>> the >>> >>>>>>> directory in one example but no files in it. I understand from a >>>>>>> previous email I read that controllers are not preferred as there >>>>>>> >>> may >>> >>>>>>> be many controls on a single page. >>>>>>> >>>>>> Might be .. I'm not sure. But I never had to use them since function >>>>>> bindings, DispathPf, LiftView ... brought everything I ever needed :D >>>>>> >>>>>>> 3. Why does stateful snippit have a dispatch but other snippits do >>>>>>> not. Is there any other information about dispatch around? >>>>>>> >>>>>> dispatch function is a nice way of invoking snippet functions with no >>>>>> reflection. Since "stateless" snippets are not required to implement >>>>>> any interface the snippets functions are invoked using reflection. >>>>>> >>>>>>> 4. For the DB, it is lazy loading? ie, if I navigate from one >>>>>>> >>> object >>> >>>>>>> to another does it query DB when I navigate down a mapped class to >>>>>>> class relationship? >>>>>>> >>>>>>> 5. Why do you use Can[] for some variables in examples and in other >>>>>>> cases you do not. In particular in stateful snippet in example you >>>>>>> >>> do >>> >>>>>>> not use Can[] but in HellForm you do use Can[] when it is a normal >>>>>>> snippet. >>>>>>> >>>>>> Cans are just a cool way to express existence/non-existence of a >>>>>> value. Often they are used to avoid null reference testing etc. A can >>>>>> can be Empty or Full ... well there is also a Failure which is in >>>>>> >>> fact >>> >>>>>> an Empty Can. >>>>>> >>>>>>> 6. Are Can's compatible with normal Scala Some None? >>>>>>> >>>>>> there are implicit functions from converting a Can to/from Option. >>>>>> >>> You >>> >>>>>> can also have Can(Some("asdfsdfg")) >>>>>> >>>>>>> 7. Why are the DB classes named as such, MappedString, >>>>>>> MetaMegaProtoUser. Mapped makes sense, its mapped to the database >>>>>>> right. Meta Mega Proto seems, complex, what does it mean? >>>>>>> >>>>>>> 8. It seems I prefer bind method over having XML for form in the >>>>>>> class. Does anyone have reasons for and against either method? >>>>>>> >>>>>> Bind is the right way to generate dynamic content on top of your >>>>>> template. I don't recommend using a lot of markup generated in Scala >>>>>> code. This should be minimized and AFAIC bind is doing a really great >>>>>> job. >>>>>> >>>>>>> Thanks, Philip >>>>>>> >> -- >> Lift, the simply functional web frameworkhttp://liftweb.net >> Collaborative Task Managementhttp://much4.us >> Follow me:http://twitter.com/dpp >> Git some:http://github.com/dpp >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---