Bounty: 50
I’ve been trying to do a “simple task” with Drupal 8. Using Ubercart 4.x, I want to totally change the product (add to cart) page.
For that I’ve created a twig file called node–product.html.twig and I’ve fully customized it. But the form is not there.
In order to have the form I’ve added this to my .theme file:
function theme_preprocess_node__product(&$variables) {
// Creates a AddToCartForm for the given product (with node->id());
$form_object = new Drupaluc_productFormAddToCartForm($variables['node']->id());
$variables['product_form'] = Drupal::formBuilder()->getForm($form_object, $variables['node']);
}
And now the form is accessible via the product_form variable in the node–product.html.twig file.
But that’s where my issue start, I only find two ways of handling the form, either I do this:
{{ form }}
But then I have the form with the “normal” design, or I create it myself by doing something like this:
<form id="{{ product_form['#form_id'] }}" method="{{ product_form['#method'] }}" action="{{ product_form['#action'] }}">
(...)
</form>
This way works since I can now customize the attributes, but I don’t have access to their ID (I’m getting the values from the node–product node and not the form).
So my question is:
How can I handle this in order for me to fully customize the product node?