What I mean by passing argument from the view to the controller is this (let us consider in my view):
(1) <td width="40%"><a href="{{=URL('my_controler_def',args=id)}}">Apply</a></td> (2) <button onclick='window.open("{{=URL("my_controler_def",args=id)}}", "mywindow");'>Apply</button> In the above (1) is calling that URL with an argument id. (2) is a button, when I click on that, it goes to the controller function my_controler_def, and in my_controler_def I will have that "id" argument passed on. I was hoping to do the same with the model. That with a button I can pass an argument from my view to the controller modal_content On Friday, February 12, 2016 at 3:29:47 PM UTC-5, Val K wrote: > > > OK, but what do you mean under "pass that argument from my view" ? > view is processed and rendered to html page at server side, JS runs only > on the client side. > so, if you can pass arg from veiw (i.e. arg is defined on server side), > also you can pass it in main_page(): > > def main_page(): > > main_pg=DIV(<any your content>) > > m_cont = LOAD(f='*modal_content**.load*', *args=[1],* ajax=True, > ajax_trap=True ) # - must works, I'm sure while modal_content() runs > "int(request.args(0)) > == 1" will be true > ... > > > > > <billmac...@gmail.com <javascript:>> писал(а) в своём письме Fri, 12 Feb > 2016 23:04:08 +0300: > > What I have done with your code is change the contoller to be: > > > def main_page(): > main_pg=DIV('hello world') > m_cont = LOAD(f='modal_content.load', ajax=True, ajax_trap=True ) > dialog = modal_wrapper(m_cont, _id='cont_id', header='Header', > footer='footer') > #show_modal_btn = BUTTON( 'Show modal',_type="button",_class = "btn > btn-default",_onclick=""" $('#cont_id').modal('show') """) > #don't forget to add dialog and show_modal_btn to main page > #main_pg.append(show_modal_btn) # or main_pg.append( > DIV(show_modal_btn) ) or something else > main_pg.append(dialog) > return dict(main_pg = main_pg) > > > And in my view I have (I am making an example here): > > {{extend 'layout.html'}} > {{=main_pg}} > > {{=BUTTON( 'Apply',_type="button",_class = "btn > btn-default",_onclick="$('#cont_id').modal('show')")}} > > Works fine. Because I see the button and I click and see the pop up. > Great. Only issue is, I need to update the table with my argument. For > example: > > def modal_content(): > db.mytable.id.default = request.args(0) #Just an example. > form = SQLFORM(db.mytable) # or even form = SQLFORM.grid(...) > return dict(form=form) > > > So, I need to pass that argument from my view to the controller of the > form. Only thing I have at my disposal is the button. > > > > On Friday, February 12, 2016 at 2:25:36 PM UTC-5, Val K wrote: >> >> >> I mean passing args/vars in main_page(): >> >> def main_page(): >> >> main_pg=DIV(<any your content>) >> >> m_cont = LOAD(f='*modal_content**.load*', *args=[ <list of your >> args>], vars={<dict of your vars> }*, ajax=True, ajax_trap=True ) >> ... >> >> >> >> But may be you want to pass something from client side, i.e. args are >> defined by some user action. >> What exactly do you want to do? >> >> >> >> >> >> On Friday, February 12, 2016 at 10:00:22 PM UTC+3, billmac...@gmail.com >> wrote: >>> >>> In the book it says load in the view. Nothing in the controller. I was >>> just wondering if we can add a button in the view and call the ajax from >>> the view with the argument. If we need to call the LOAD from the view, its >>> >>> {{=LOAD('default','manage_things',ajax=True)}} >>> >>> Then it fails for m_count. >>> >>> >>> On Friday, February 12, 2016 at 12:20:10 AM UTC-5, Val K wrote: >>>> >>>> LOAD() works like URL(), so, to pass args/vars to modal_content you >>>> could write >>>> m_cont = LOAD(f='*modal_content**.load*', *args=[ ], vars={ }*, >>>> ajax=True, ajax_trap=True ) # see LOAD in web2py book >>>> >>>> in modal_content controller there is nothing new, everything is as >>>> usual >>>> def modal_content(): >>>> arg_0 = request.args(0) >>>> a = request.vars.a >>>> >>>> >>>> >>>> On Friday, February 12, 2016 at 1:16:35 AM UTC+3, billmac...@gmail.com >>>> wrote: >>>>> >>>>> Thank you! Val and the app works great. >>>>> >>>>> One question: >>>>> >>>>> Instead of controller, I have the button displayed in the view as: >>>>> >>>>> {{=BUTTON( 'Apply',_type="button",_class = "btn >>>>> btn-default",_style="background-color:green;background-image:none",_onclick=""" >>>>> >>>>> $('#cont_id').modal('show') """ )}} >>>>> >>>>> It works, however, I need to pass an argument to my controller >>>>> "modal_content". How do I pass a request.args(0) from my view to the >>>>> controller in above? Just like I would do >>>>> >>>>> <button onclick='window.open("{{=URL("*modal_content*",args= >>>>> something.id)}}", "mywindow");'>Apply</button> >>>>> >>>>> >>>>> Since I don't see the URL or callback to the javascript. Thanks in >>>>> advance. >>>>> >>>>> >>>>> On Thursday, February 11, 2016 at 4:27:22 PM UTC-5, Val K wrote: >>>>>> >>>>>> Hi! >>>>>> Here is my solution. I have modal_wrapper function. In controller >>>>>> file, I have two controllers - main_page and modal_content: >>>>>> >>>>>> >>>>>> >>>>>> def *main_page*(): >>>>>> >>>>>> main_pg=DIV(<any your content>) >>>>>> >>>>>> m_cont = LOAD(f='*modal_content**.load*', ajax=True, >>>>>> ajax_trap=True ) >>>>>> >>>>>> dialog = modal_wrapper(m_cont, _id='*cont_id*', header='Header', >>>>>> footer='footer') >>>>>> >>>>>> show_modal_btn = BUTTON( 'Show modal', >>>>>> _type="button", >>>>>> _class = "btn >>>>>> btn-default", >>>>>> _onclick=""" >>>>>> $('#*cont_id*').modal('show') """) >>>>>> >>>>>> #don't forget to add dialog and show_modal_btn to main page >>>>>> main_pg.append(show_modal_btn) # or main_pg.append( >>>>>> DIV(show_modal_btn) >>>>>> ) or something else >>>>>> main_pg.append(dialog) >>>>>> >>>>>> return dict(main_pg = main_pg) >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> # keep in mind just one thing: >>>>>> # this controller is exposed by *.load, so it must return a dict of >>>>>> ONE element >>>>>> # to return more than one element - wrap all in one DIV: >>>>>> # ret = DIV() >>>>>> # ret.append( ... ) >>>>>> # ret.append( form ) >>>>>> # ret.append( ... ) >>>>>> # return dict(ret = ret) >>>>>> >>>>>> def *modal_content*(): >>>>>> >>>>>> form = SQLFORM(...) # or even form = SQLFORM.grid(...) >>>>>> >>>>>> return dict(form=form) >>>>>> >>>>>> >>>>>> >>>>>> # means bootstrap 3 >>>>>> def* modal_wrapper*(content, _id, header='', footer=''): >>>>>> >>>>>> main_wrap = DIV('', _class="modal fade", _role="dialog", >>>>>> _id=_id, _tabindex="-1" ) >>>>>> title_id = _id + '_title' >>>>>> main_wrap['_aria-labelledby']=title_id >>>>>> >>>>>> dialog_div=DIV('', _class="modal-dialog" , _role="document") >>>>>> content_div=DIV('', _class="modal-content") >>>>>> header_div = DIV( _class="modal-header") >>>>>> >>>>>> close_cross = BUTTON( >>>>>> SPAN(XML('×'), >>>>>> **{'_aria-hidden':"true"}), >>>>>> _type="button", _class="close", >>>>>> data={'dismiss':"modal"}, >>>>>> **{'_aria-label':"Close"} >>>>>> ) >>>>>> title_h4 = H4( header, _class="modal-title", _id = title_id) >>>>>> body_div = DIV( content, _class="modal-body") >>>>>> >>>>>> >>>>>> close_btn = BUTTON('Close', _type="button", _class="btn >>>>>> btn-default", data={'dismiss':"modal"}) >>>>>> footer_div = DIV( footer, close_btn, _class="modal-footer") >>>>>> >>>>>> # gluon all >>>>>> main_wrap[0] = dialog_div >>>>>> dialog_div[0] = content_div >>>>>> >>>>>> header_div.append(close_cross) >>>>>> header_div.append(title_h4) >>>>>> >>>>>> [content_div.append(c) for c in (header_div, body_div, >>>>>> footer_div)] >>>>>> return main_wrap >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Thursday, February 11, 2016 at 8:07:32 PM UTC+3, >>>>>> billmac...@gmail.com wrote: >>>>>>> >>>>>>> Thank you for your answer Massimo. When I implemented this. >>>>>>> >>>>>>> <button onclick='window.open("{{=URL("my_view",args=something.id)}}", >>>>>>> "mywindow");'>Apply To This Post</button> >>>>>>> >>>>>>> It shows me a button and then I get redirected to another page. I >>>>>>> just wanted a pop up window open up with a form to submit that user can >>>>>>> move around without being redirected to another page. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wednesday, February 10, 2016 at 10:51:11 PM UTC-5, Massimo Di >>>>>>> Pierro wrote: >>>>>>>> >>>>>>>> I see you want a different window, not a modal. >>>>>>>> >>>>>>>> then you have to put the form logic in its own controller action >>>>>>>> and call it from js >>>>>>>> >>>>>>>> <button onclick="window.open("{{=URL('form_action)}}");">click >>>>>>>> me</button> >>>>>>>> >>>>>>>> On Wednesday, 10 February 2016 18:00:44 UTC-6, billmac...@gmail.com >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Thank you for the answer Massimo. I did this like you said to put >>>>>>>>> the form in the body in index/popup.html however, it didn't pop up >>>>>>>>> like the >>>>>>>>> example in the link above. Instead I got it in the same browser. I am >>>>>>>>> guessing my implementation is wrong. >>>>>>>>> >>>>>>>>> <div class="modal fade"> >>>>>>>>> <div class="modal-dialog"> >>>>>>>>> <div class="modal-content"> >>>>>>>>> <div class="modal-header"> >>>>>>>>> <button type="button" class="close" data-dismiss="modal" >>>>>>>>> aria-hidden="true">×</button> >>>>>>>>> <h4 class="modal-title">Modal title</h4> >>>>>>>>> </div> >>>>>>>>> <div class="modal-body"> >>>>>>>>> >>>>>>>>> {{=form}} >>>>>>>>> >>>>>>>>> </div> >>>>>>>>> <div class="modal-footer"> >>>>>>>>> <button type="button" class="btn btn-default" >>>>>>>>> data-dismiss="modal">Close</button> >>>>>>>>> <button type="button" class="btn btn-primary">Save >>>>>>>>> changes</button> >>>>>>>>> </div> >>>>>>>>> </div><!-- /.modal-content --> >>>>>>>>> </div><!-- /.modal-dialog --> >>>>>>>>> </div><!-- /.modal --> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wednesday, February 10, 2016 at 5:06:28 PM UTC-5, Massimo Di >>>>>>>>> Pierro wrote: >>>>>>>>>> >>>>>>>>>> Bootstrap3 has built-int modals: >>>>>>>>>> https://nakupanda.github.io/bootstrap3-dialog/ >>>>>>>>>> You can but {{=form}} in the body of the modal. >>>>>>>>>> >>>>>>>>>> On Tuesday, 9 February 2016 14:26:05 UTC-6, billmac...@gmail.com >>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Hello, A new user migrating from Django to web2py and absolutely >>>>>>>>>>> loving it. A quick question. How do I use a light box or a pop up >>>>>>>>>>> window to >>>>>>>>>>> display a form in my view? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> for example in default/index.html >>>>>>>>>>> >>>>>>>>>>> {{=form}} >>>>>>>>>>> >>>>>>>>>>> Want to show that form in a pop up window. >>>>>>>>>>> >>>>>>>>>> -- > 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 a topic in the > Google Groups "web2py-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/web2py/Y_TXPdRpDqQ/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > web2py+un...@googlegroups.com <javascript:>. > For more options, visit https://groups.google.com/d/optout. > > > > > -- > Написано с помощью почтового клиента Opera: http://www.opera.com/mail/ > -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.