Need: Ability to dynamically build Forms
Structure (simple idea not actual structure)
Admin: Form Assignment, where you create what field you want your new Form to have
FrontEnd: Where the New form will be implemented (this is the root of this question)
FronEnd Storage: When the New form is filled out the data points are written to a set of tables
The idea is simple enough, Go into Admin, select the fields, fieldType, and Labels you want
I.E.
Field Name:*Enter a specific field name, like f_name or email
FieldType: [Text, TextArea, Password, Radio, DatePicker, CheckBox, Select, etc]
Label: What to display on the resulting form, f_name = First Name, etc
Then I hit a page on the FrontEnd where the New form is generated, I fill it out and voila the data is stored in the FrontEnd Storage tables.
So the question is, idea's on how to accomplish this, I already have the Admin section done, it's dynamically building and appropriately binding a frontEnd From that I would like advice on.
Currently my idea is to simply make a shell form that is a huge ugly switch statement that builds sfForm elements and appropriate validators for each field (fields given from what was entered in the Admin area)
I feel this is the 'wrong' way to do it, I did find a plugin 'spyFormBuilderInterface2Plugin' which is old and build for propel not doctrine, but this is the basic idea of what I am after. So how would YOU do it?
Please note I am not looking to Dynamically ADD forms to a current form, I can already do this and it's exactly what is implemented in my Admin section, I need to take data a create a whole NEW form programatically
I've created something like you described, just the way you said.
I have a model FormDefinition which defines a form, and has a collection of FormFields. Each form field has a widget_class, widget_options, validator_class and validator_options.
I have a custom myForm which needs a FormDefinition in it's constructor. In the setup() of myForm, I loop through all fields a instantiate the widgets and validators.
Beacuse in our solution, we needed/wanted to store all form data in separate tabels. My myForm extends from sfDoctrineForm, and my backend has some logic which creates/updates the (php) model and database definition, by just calling the appropriate Doctrine methods. But you could also create an EAV store.
Related
I have two custom forms A1,A2,A3 and fields a1,a2,a3 in the forms respectively. I want to create a new project with custom fields from the forms A1, A2. How should we include multiple categoryID in the POST URL
/attask/api/v10.0/PROJ?fields=parameterValues&name=XXX&DE:a1=hello&DE:a2=hello1&categoryID=<A1/A2 category ID - How should i fill it.>
I tried adding this paramter but no luck categoryIDs=5d10971f0022b132ec67f6fb6c60b3a4,5d07244000060f86c04b49527f1
I got the following error "message": "APIModel V10_0 does not support field categoryIDs (Project)"
If you attempt to set a custom field value on an object that does not yet have that field associated to it (no form on the object that contains the field), Workfront will automatically attach an appropriate form. If those forms are the only ones that utilize your fields, you should be able to simply set the field values and be done with it.
However, if you wish to attach specific custom forms without filling out the fields, or if you have a field associated with multiple forms and you want to ensure a specific form is attached, you must first attach the form(s) in one call and then update the fields in another.
To attach a custom form,
PUT <Workfront URL.../<objectID?updates={objectCategories:[{categoryID:`"<custom form ID>`",categoryOrder:<order of form, starting with 0>,objCode:`"CTGY`"}]}
Please note that this will remove any forms not explicitly specified in this call (it does not append) so you'll need to capture any existing forms and re-apply them.
Below API call worked
POST <Workfront URL.../<object>?updates={objectCategories:[{categoryID:`"<custom form ID1>`",categoryOrder:<order of form, starting with 0>,objCode:`"CTGY`"},{categoryID:`"<custom form ID2>`",categoryOrder:<order of form, starting with 0>,objCode:`"CTGY`"}]],name:"`<object_name>`", DE:a1:"hello", DE:a2:"hello1"}
I need to allow the users repeat some of the form fields(or form groups) in the survey forms. There should be a + or - button next to the field that if the user clicks on +, then a new field is created.
Example: https://www.rhyzz.com/repeatable-fields.html
I would be surprised to know if Qualtrics doesn't have this feature.
I google for this but no success.
You can't create new fields (choices, answers, variables, etc.) on the fly in Qualtrics. A field has to be defined in the survey for it be be saved in the response data.
You could write a JavaScript to show and hide fields to give the appearance of adding and removing fields, but you would have to define the maximum number of fields in the survey beforehand.
I have a form and it's record source is a table. I created the form separately and added the control sources to the different fields in the form and also changed it's record source. I imported values from an excel sheet into the table and when I open the form, I do not see the tabe values being displayed in the form. Any idea what I should do to see the table records in the form?
In form design mode, check the form's DataEntry property. It sounds like yours is set to Yes, which hides existing records and only allows new entries. Change it to No and you will see the existing records.
Another possibility is that a filter is active and no records match that filter.
Use a form wizard to generate a working form based on your table. Then once you can see the data being displayed in the form, customise as needed.
I'm interested in creating a fill-in-the-blank story generator for kids. I want to create a form where they can put in the names of characters and other things and have that data populate a pre made story. After they hit SUBMIT they would be taken to a follow up page with their input and the story in plain text. I'm pretty new to this but very eager to learn. What would be the best way to go about creating this form that generates stories?
It seems you would need two database tables - one for storing the original story templates and another one for storing the generated texts.
The challenging part with the template database is signifying the parts where there can be user input. One idea - place a special format code inside the text in the following manner:
Once upon a time, in a forest far away, lived ::00001::.
Assuming you are loading that template as it is in an element inside a form (I would avoid textfields for this purpose and just place the text).
After the text is loaded into the web page (javascript onload), replace your markers with input fields (I'd use jquery for that). You can use jquery to search an elements text/innerHtml and replace it with another html element. Here is an idea how to do that. The replacement of markers with inputs can be done in a javascript while loop, as long as there is "::" in the text of the element.
Then your ::00001:: could be replaced for example with:
< input type='text' id='input00001' name='input[00001]'/>
Then, when the user submits the form, you can get the values for each field and store them to a second database with the given ids. This way, you will be able to reload them later (same process, only instead of inputs, you would replace the codes with their corresponding values).
This way, in the second database table you only save the input values and not the whole text, to save up memory. Probably in the second table you would like to store the id of the field, the value, perhaps a template id (so that you know for which story template it corresponds) and a user id or at least a timestamp, in case you can have many generated stories for the same template.
Hope this helps!
I have one form using to different models. I want to be able to create a new Person and eventually a new User, to give this person an account. A person doens't need to have a User related (could be just a person used for statistics or something like that). I have a checkbox in my form "Click if you want create a user" and I show the user part of the form if it's checked.
Then in the controller I can, with the checkbox value, know if I need call performAjax() for both Person and User or only Person.
But my problem is about the client validation. If I try to submit the form without the User required field, for example, the submition will abort and i'll get some errors like "This field is requiered".
So, my question is how could I skip the validation of my user model if its fields are empty (checkebox unchecked, we don't want to create a user).
Any help are welcom :)
Sorry for my bad English.
Have a good day :)
Michaƫl S.
When saving the model, set the first parameter on false to skip validation:
$model->save(false)