I have a designed template on photoshop from a client. My interrogation… When I saw the template is: Can I put 2 fields side-by-side? I want to have f_firstname and f_lastname on one row… Is there anyway to inject tags or piece of code with classes like ex: div=”column1of2″ $field_here close div to have a 2 columns for 2 fields?
Actually, code generate each fields are on separates rows. That’s not very pretty. Possible?
I have this code :
private static $allowed_actions = array(
'FormInfolettre'
);
public function FormInfolettre() {
$fields = new FieldList(
EmailField::create('f_email', 'Votre courriel'),
TextField::create('f_firstname', 'Votre prénom'),
TextField::create('f_lastname', 'Votre nom'),
TextField::create('f_message', 'Votremessage'),
);
$actions = new FieldList(
FormAction::create("Soumettre")->setTitle("Soumettre")
);
$required = new RequiredFields(
array(
'f_email',
'f_firstname',
'f_lastname',
'f_message',
));
$form = new Form($this, 'FormInfolettre', $fields, $actions, $required);
return $form;
}
3
Answers
I believe this can be done in the new versions by adding your fields to groups then adding a class and CSS for those classes, one group that is left aligned and the other right aligned.
Alternatively, I forked an older version of Userforms a while back to accomplish this.
https://github.com/helenclarko/silverstripe-userforms
You can create FieldGroups for the container div and add extra css classes to the fields like
I’ve always liked using a SilverStripe template for the forms. To do this, we need to use the forTemplate function to define the template. With the code below, we are setting the template name to MyForm
We create a MyForm.ss template in themename/templates/Includes
A form layout would be something like: