I created a form which have a lot of images and a delete button on every each one of them. I used ajax to create a callback function which would delete the image. Here is part of my form:
foreach($result as $key=>$some){ $form['image-entry'][$some->id] = array( '#type' => 'fieldset' ); $form['image-entry'][$some->id]['image_' . $some->id] = array( '#markup' => theme('image', $variables[$key]), ); $form['image-entry'][$some->id]['description_' . $some->id] = array( '#type' => 'textarea', '#default_value' => $some->description, '#attributes' => array( 'placeholder' => t('Describe this picture'), ), ); $form['image-entry'][$some->id]['submit3' . $some->id] = array( '#type' => 'submit', '#value' => 'Delete', '#ajax' => array( 'callback' => 'image_gallery_delete_photo_callback', ), ); $form['#foo'] = array($some->id); }
As you can see I have 3rd submit button which is ajax callback and from example I found out that I need to create a new form element (foo) in this case, which stores some data that I can pass. Everything works like a charm, this is my callback function:
function image_gallery_delete_photo_callback($form, $form_state, $args){ $arguments = $form['#foo']; dpm($arguments); /*$photo_delete = db_delete('image_gallery_photos') ->condition('id', $arguments) ->execute();*/ }
I am able to fetch the id of the photo from the form, but here I face a brick wall.
Problem: id is overwritten because it is in a foreach loop, taking it out, doesn’t help. It only stores last value from the loop.
How can I get an id of the element selected?
Sponsored by SupremePR