public static function ParagraphsFrontendUIAddSet::addMoreAjax in Paragraphs frontend ui 8
File
- src/
Form/ ParagraphsFrontendUIAddSet.php, line 85
Class
- ParagraphsFrontendUIAddSet
- Class CleanupUrlAliases.
Namespace
Drupal\paragraphs_frontend_ui\FormCode
public static function addMoreAjax(array $form, FormStateInterface $form_state) {
$build_info = $form_state
->getBuildInfo();
$triggering_paragraph = $build_info['paragraph'];
$trigger = $form_state
->getTriggeringElement()['#name'];
$set = substr($trigger, 0, -8);
if (is_numeric($set)) {
$set = ParagraphSet::load($set);
$set_paragraph = Paragraph::load($set
->get('field_paragraph')
->getValue()[0]['target_id']);
$parent = $triggering_paragraph
->getParentEntity();
$parent_type = $parent
->getEntityTypeId();
$parent_bundle = $parent
->getType();
$parent_entity_id = $parent
->id();
$parent_field_name = $triggering_paragraph
->get('parent_field_name')
->getValue()[0]['value'];
$paragraph_items = $parent->{$parent_field_name}
->getValue();
$paragraphs_new = [];
foreach ($paragraph_items as $delta => $paragraph_item) {
$paragraphs_new[] = $paragraph_item;
if ($paragraph_item['target_id'] == $triggering_paragraph
->id()) {
$new_paragraph = $set_paragraph
->createDuplicate();
$new_paragraph
->save();
$paragraphs_new[] = [
'target_id' => $new_paragraph
->id(),
'target_revision_id' => $new_paragraph
->getRevisionId(),
];
}
}
$parent->{$parent_field_name}
->setValue($paragraphs_new);
$parent
->save();
$identifier = '[data-paragraphs-frontend-ui=' . $parent_field_name . '-' . $parent
->id() . ']';
$response = new AjaxResponse();
// Refresh the paragraphs field.
$response
->addCommand(new ReplaceCommand($identifier, $parent
->get($parent_field_name)
->view('default')));
return $response;
}
/*
$command = new CloseModalDialogCommand();
$response->addCommand($command);
return $response;*/
}