Avem un site multilingv care implicit este „en”.
Uneori, editorii creează conținut într-o altă limbă precum „de” și apoi îl traduc în „en”.
Problema mea este că folosim regulile de vizibilitate ale constructorului Layout pentru blocuri.
Și atributul de acțiune de formular care este redat ca exemplu de mai jos.
Nu are prefix de limbă.
Și, prin urmare, ajunge într-un răspuns 403 pentru fiecare pagină de conținut care nu este creată în limba implicită a site-urilor.
Întrebarea mea este cum pot adăuga prefixul de limbă la atributul de acțiune în modul cel mai drupal?
funcția publică buildForm(array $form, FormStateInterface $form_state, SectionStorageInterface $section_storage = NULL, $delta = NULL, $uuid = NULL) {
$this->sectionStorage = $section_storage;
$aceasta->delta = $delta;
$this->uuid = $uuid;
$visibility_conditions_applied_to_block = $this->getCurrentComponent()->get('vizibility') ?: [];
$conditions_available_to_block = [];
foreach ($this->conditionManager->getFilteredDefinitions('layout_builder', $this->getAvailableContexts($section_storage)) ca $plugin_id => $definiție) {
$conditions_available_to_block[$plugin_id] = $definition['label'];
}
$articole = [];
foreach ($visibility_conditions_applied_to_block ca $visibility_id => $configurare) {
$condition = $this->conditionManager->createInstance($configuration['id'], $configuration);
$opțiuni = [
'atribute' => [
'class' => ['use-ajax'],
'data-dialog-type' => 'dialog',
'data-dialog-renderer' => 'off_canvas',
'data-outside-in-edit' => TRUE,
],
];
$items[$visibility_id] = [
'etichetă' => [
'date' => [
'condition_name' => [
'#type' => 'html_tag',
'#tag' => 'b',
'#value' => $condition->getPluginId(),
],
'condition_summary' => [
'#type' => 'container',
'#markup' => $conditie->rezumat(),
],
],
],
'editare' => [
'date' => [
'#type' => 'link',
'#title' => $this->t('Editează'),
'#url' => Url::fromRoute('layout_builder.add_visibility', $this->getParameters($visibility_id), $options),
],
],
'șterge' => [
'date' => [
'#type' => 'link',
'#title' => $this->t('Șterge'),
'#url' => Url::fromRoute('layout_builder.delete_visibility', $this->getParameters($visibility_id), $options),
],
],
];
}
dacă ($articole) {
$form['vizibilitate'] = [
'#prefix' => '<div class="configured-conditions">',
'#sufix' => '</div>',
'#theme' => 'tabel',
'#rows' => $articole,
'#caption' => $this->t('Condiții configurate'),
'#weight' => 10,
];
}
$form['condiție'] = [
'#type' => 'selectați',
'#title' => $this->t('Adăugați o condiție de vizibilitate'),
'#options' => $conditions_available_to_block,
'#empty_value' => '',
'#weight' => 20,
];
$form['operator'] = [
'#type' => 'radiouri',
'#title' => $this->t('Operator'),
'#options' => [
'și' => $this->t('Și'),
'sau' => $this->t('Sau'),
],
'#default_value' => $this->getCurrentComponent()->get('visibility_operator') ?: 'și',
'#access' => count($items) > 0,
butonul
'#weight' => count($items) === 1 ? 30:3,
];
$form['update_operator'] = [
'#type' => 'trimite',
'#access' => count($items) > 1,
'#weight' => 5,
'#value' => $this->t('Update operator'),
'#submit' => ['::updateOperator'],
];
dacă (număr($articole) === 1) {
$form['operator']['#states'] = [
'invizibil' => [
'[name="condition"]' => ['valoare' => ''],
],
];
}
$form['actions']['#weight'] = 40;
$form['actions']['submit'] = [
'#type' => 'trimite',
'#value' => $this->t('Adăugați condiție'),
'#states' => [
'invizibil' => [
'[name="condition"]' => ['valoare' => ''],
],
],
];
$form['#attributes']['data-layout-builder-target-highlight-id'] = $this->blockUpdateHighlightId($this->uuid);
dacă ($this->isAjax()) {
$form['actions']['submit']['#ajax']['callback'] = '::ajaxSubmit';
$form['actions']['submit']['#ajax']['event'] = 'clic';
$form['update_operator']['#ajax']['callback'] = '::ajaxSubmit';
$form['update_operator']['#ajax']['event'] = 'clic';
}
returnează $form;
}
Exemplul nu va funcționa:
<form class="layout-builder-configure-visibility" data-layout-builder-target-highlight-id="28411f7a-940c-44a5-bf49-43ca6dfa3acd" data-drupal-selector="layout-builder-configure-visibility" action="/layout_builder/visibility/block/overrides/node.220/1/28411f7a-940c-44a5-bf49-43ca6dfa3acd/user_role?destination=/layout_builder_iframe_modal/redirect" method="post" id="layout-builder-configure-visibility" accept-charset="UTF-8">
Exemplu de lucrare:
<form class="layout-builder-configure-visibility" data-layout-builder-target-highlight-id="28411f7a-940c-44a5-bf49-43ca6dfa3acd" data-drupal-selector="layout-builder-configure-visibility" action="/de/layout_builder/visibility/block/overrides/node.220/1/28411f7a-940c-44a5-bf49-43ca6dfa3acd/user_role?destination=/layout_builder_iframe_modal/redirect" method="post" id="layout-builder-configure-visibility" accept-charset="UTF-8">