Good points. I think this is roughly the approach taken in web3py:
https://github.com/mdipierro/web3py/blob/master/web3py/forms.py.
Anthony
On Friday, April 19, 2013 4:49:57 PM UTC-4, RHC wrote:
>
> Thinking about this some more, what I would like would be for a controller
> to generate this json:
>
> { form:
> { fields:
> [ {name: 'id', type: 'int', value: 234, error: '', comment: ''},
> {name: 'title', type: 'string', length: 100, value: 'My Test
> Record', error: '', comment: ''},
> {name: 'start_date', type: 'date', value: '2013-11-15', error:
> '', comment: ''},
> {name: 'end_date', type: 'date'}, value: '2013-12-20', error:
> '', comment: ''}
> {name: 'type', type: int, value: 2, error: '', comment: '',
> select: [{id: 1, string: 'Type One'},{id: 2, string: 'Type
> Two'}]}
> ]},
> meta:
> { _formkey: '4237yad87fw75398yt39y',
> _formname: 'myform',
> ... }
> }
>
> Then the client side framework (be it Angular or whatever else) could use
> this to generate the form interface however it wishes. When the end user
> then submits the data the client side framework POSTs the same JSON data
> back to the controller which will validate the record and return the JSON
> back reporting whether the submit was successful and populating the error
> parameter if any fields failed the validation.
>
> plugin-clientapi is a bit different from what I am aiming to do as far as
> I can tell. I stand corrected in that it does not just use web2py as a
> database back end. It seems it basically allows you to do some stuff, such
> as creating a form from javascript on the client side, which would normally
> be done in a web2py controller. My aims are different; I would like the
> web2py controller to keep control over what forms and data are presented to
> the client, but give the client side framework control over how that form
> and data is presented.
>
> Looking at the SQLFORM, FORM and the process/validate methods it seems to
> me that the HTML generation and form generation and validation are bound
> too closely together for the MVC approach. As a result it is difficult to
> customise the way a form gets presented on the client, as the DOM structure
> is already generated by the SQLFORM class within the controller. I find
> myself using {{=form.custom.widget.blahblah}} a lot in my views to take
> back control of the forms appearance and function. Exploring the idea of
> generating the view using a client side framework has highlighted for me
> that with SQLFORM the controller is doing stuff that the view should be
> doing.
>
> I would have thought a better approach would be for SQLFORM to create an
> object with the structure similar to what I outlined above (plus a lot of
> stuff I have probably missed out) and then in the view you use a method to
> generate the HTML (e.g. {{=form.asHTML()}}). The object would have all the
> details needed to generate HTML, XML, or JSON along with the clever methods
> to validate, insert, or update the form and CSRF prevention which would
> remain in the controller as I would expect in a MVC approach. We could then
> create our own custom methods to generate the HTML as we wish or even use
> the view templates to generate the HTML in a more long winded but
> customisable fashion.
>
>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.