Glad to help back, as I've gotten so much help from here.
If you like to have a more generic code to add your classes to the form
objects, you can use the code below. It will add a new class to all
elements while keeping the web2py classes. I think you could even add this
to the layout with "try"-statement, so anytime you use any form, it would
include new classes.
<!-- Additing bootstrap 3 classes to web2py form-->
{{for element in form.elements():}}
{{if element['_class']:}}
{{element['_class'] = str(element['_class']) + " form-control"}}
{{else:}}
{{element['_class'] = 'form-control'}}
{{pass}}
{{pass}}
Ykä
On Sunday, October 6, 2013 10:31:19 PM UTC+3, Francisco García wrote:
>
> Hello Ykä and Paolo,
>
> Your answers are very useful for me. The problem is solved.
> All I needed was this sentence:
>
> form.custom.widget.FIELD['_class'] = 'text myclass'}
>
> Thank you for your fast answer.
> Regards.
>
>
> El sábado, 5 de octubre de 2013 09:24:59 UTC+2, Ykä Marjanen escribió:
>>
>> Hi Francisco,
>>
>> happy to help you, as I've gone a 4 day intensive bootstrap 3 integration
>> to web2py and learned a lot about customizing the views and forms. This
>> might not be the best (or only) solution, but has worked well for me:
>>
>> - Web2py form includes classes based on their type, which I recommend to
>> keep, if you want any added web2py functionality.
>> - You need to use custom form style (form.custom.begin) and then
>> manipulate each widget separately (or all of them in a for loop)
>>
>> Here's my form code in a view (controller is not modified). In this form
>> I have added "form-control" class of bootstrap 3 and kept the original
>> class as well. For textarea you can do
>> "form.custom.widget.textfield['_rows'] = 3" if you want to make a smaller
>> textarea.
>>
>> <<<
>> <form action="" enctype="multipart/form-data" method="post" role="form">
>> <div class="form-group">
>> {{form.custom.widget.campaign['_class'] =
>> 'generic-widget form-control'}}
>> {{form.custom.widget.topic['_class'] = 'string
>> form-control'}}
>> {{form.custom.widget.topic['_placeholder'] = 'Idea
>> topic'}}
>> {{form.custom.widget.description['_class'] = 'text
>> form-control'}}
>> {{form.custom.widget.description['_placeholder'] =
>> 'Idea description'}}
>> <div class="form-group">
>> <label for="exampleSelect">Select a
>> campaign</label>
>> {{=form.custom.widget.campaign}}
>> </div>
>> <div class="form-group">
>> <label for="exampleInputTopic">Input idea topic
>> and description</label>
>> {{=form.custom.widget.topic}}
>> </div>
>> <div class="form-group">
>> {{=form.custom.widget.description}}
>> </div>
>> <button type="submit" class="btn btn-primary">Submit
>> your idea</button>
>> </div>
>> {{=form.custom.end}}
>>
>> <<<<
>>
>> Ykä
>>
>> On Friday, October 4, 2013 8:14:33 PM UTC+3, Francisco García wrote:
>>>
>>> Hello all,
>>>
>>> I am loading a form from a database table, with CRUD or SQLFORM (It is
>>> the same for me).
>>> This form contains text fields and textarea fields between others.
>>>
>>> Now, I need to change in the views the class of all textareas, from
>>> class="text" to class="myclass"
>>> How can I do this from controllers or views? (I can't edit any css
>>> file).
>>>
>>> I am trying with form.custom.widget but I can't change it.
>>> I'm not sure if it is something simple, or it is impossible to do this
>>> way.
>>>
>>>
>>> Thank you in advance.
>>> Regards,
>>> Francisco
>>>
>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
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.