0

web2py 用の CKEditor プラグインを使用しています。私が抱えている問題は、フォーム上で、誰かがドロップダウン値をクリックすると、JavaScript を使用してフォームが送信され、request.vars の id を使用して新しいフォーム値 (form.vars.body) が生成されることです。コードは form.accepts(req..., sess..) に到達します。何らかの理由で、送信前にウィジェット値 (form.vars.body) が元の値に変更されます (他の form.vars フィールドが変更され、正常に動作します)。私の質問は、その特定のフィールドを元の値に戻すために、 form.accepts(req.., ses..) を変更するか、ウィジェットコード内の何かを再度呼び出すことです。

query1 = db.contents.event_instance_id==event_instance_id
query2 = db.contents.section==section_id

contents = db(query1 & query2).select(db.contents.id, db.contents.title,db.contents.body).first()

record=contents.id
fields = ['id','section', 'title', 'body']

# get form
# this returns the correct form.xml with the right content for db.contents.body
form = SQLFORM(db.contents, record, fields=fields, submit_button=T('Save Content'))

if form.accepts(request.vars, session):
    response.flash = T("Contents saved")
elif form.errors:
    response.flash = T("Error saving content")

# but after form.accepts the form.xml is different, form.vars.body is different, 
# which is then passed to the view with the wrong content for the field with widget
return dict(form=form, title=title, event_instance_id=event_instance_id)

in the model

db.define_table('contents', Field('event_instance_id', 'reference event_instance', label='Event Instance'), Field('section', 'reference sections'), Field('title', length=255, requires=IS_NOT_EMPTY()), Field('body', 'text', requires=IS_NOT_EMPTY(), widget=ckeditor.widget) )

ビューでは、そのだけ{{=form}}

4

0 に答える 0