Начал изучать сие чудо (Drupal 8) и не могу найти нормальную информацию как писать сложные модули на нём. Начал писать модуль в виде формы. Построение формы:
public function buildForm(array $form, FormStateInterface $form_state) {
$form['tab_group'] = [
'#type' => 'container',
'#attributes' => ['id' => 'tab-group-container'],
];
// кнопка
$form['tab_group']['btn_popular'] = [
'#type' => 'button',
'#value' => $this->t('Популярные'),
'#data' => static::getCountries(),
'#ajax' => [
'callback' => '::btnPopularCallback',
'event' => 'click',
'wrapper' => 'roaming-container',
],
];
/* Еще две такие же кнопки */
// контейнер, в который всё будет вставляться
$form['roaming_container'] = [
'#type' => 'container',
'#attributes' => ['id' => 'roaming-container'],
];
return $form;
}
По нажатию на эту кнопку выполняется callback-функция:
public function btnPopularCallback(array $form, FormStateInterface &$form_state):array {
$i = 0;
foreach ($form_state->getTriggeringElement()['#data'] as $item)
{
$curr_item = 'item_'.$i;
$form['roaming_container'][$curr_item] = [
'#type' => 'image_button',
'#prefix' => '<a href="#" class="roaming-item">',
'#suffix' => '</a>',
'#markup' => static::getCountryItem($form_state, $item),
'#attributes' => [
'id' => [$curr_item],
],
'#data' => $item,
'#ajax' => [
'callback' => 'CountryPageCallback',
'event' => 'click',
'method' => 'replace',
'wrapper' => 'roaming-container',
],
];
$i++;
}
return $form['roaming_container'];
}
Всё вроде бы хорошо. Элементы выводятся. Пишу для этих элементов коллбэки, практически аналогичные, но они даже не вызываются. Ajax у этих элементов не работает.
Код из консоли браузера:
<div id="roaming-container" data-drupal-selector="edit-roaming-container" class="js-form-wrapper form-wrapper">
<a href="#" class="roaming-item">
<!-- Разметка (img и span) -->
</a>
...
<a href="#" class="roaming-item">
<!-- Разметка (img и span) -->
</a>
</div>
Пытаюсь вызвать session или модель в system/core/Commonphp Для этого мне сначала необходимо загрузить экземпляр класса CI_Controller
Нужно убрать домен со всех ссылок wp , что бы был вид не http://domaincom/post, а просто /post?
При попытке выполнения команды Composer install в проекте, вылетает ошибка