Рейтинг:0

Как я могу программно добавить или удалить новый request_path, чтобы заблокировать видимость?

флаг in

Кажется, я мог бы использовать getVisibilityConditions метод блока, который возвращает ConditionPluginCollection объект с setInstanceConfiguration метод, который, по-видимому, достаточно прост в использовании, требует $запрос_путь и $конфигурация аргументы. Но переменная текущего пути запроса видимости блока представляет собой строку, содержащую пути, разделенные запятыми. Как я могу обновить это, чтобы добавить или удалить пути при сохранении узла? Я знаю, что, по сути, спрашиваю, как управлять видимостью блока в форме узла, что не совсем неправильно. Просто кажется, что я мог упустить что-то в API, что позволило бы это сделать.

4uk4 avatar
флаг cn
Это ответ на ваш вопрос? https://drupal.stackexchange.com/a/226037/47547 - я не хочу голосовать за дубликат, потому что вопрос уже помечен как ложный дубликат.
флаг cn
@ 4uk4 он уже открыт (ваш голос за повторное открытие является обязательным из-за вашей оценки в соответствующих тегах)
steve avatar
флаг in
@4uk4 ваш ответ на https://drupal.stackexchange.com/a/226037/47547 - это в основном то, что я делаю, но этого недостаточно, поскольку в вашем предложении request_path просто заменен, я хочу добавить или вычесть пути запроса.
sonfd avatar
флаг in
Можете ли вы просто использовать implode/explode для преобразования строки в массив, а затем обратно после внесения изменений?
Рейтинг:0
флаг cn

Но переменная текущего пути запроса видимости блока представляет собой строку, содержащую пути, разделенные запятыми.

Это итоговое отображение, а не формат данных, сохраненный в конфигурации. Здесь сохраняются необработанные входные данные вместе с новыми строками, введенными пользователем.

Если вы хотите следовать @sonfd комментарий вы можете переписать код связанного ответа:

$block = \Drupal\block\Entity\Block::load('openidconnectlogin');
$visibility = $block->getVisibility();
если (isset($visibility['request_path']['pages'])) {
  $pages = $visibility['request_path']['pages'];
  $paths = array_map('обрезать', взорвать("\n", $pages));

и позже

  $pages = implode("\n", $paths);
  $visibility['request_path']['pages'] = $pages;
  $block->setVisibilityConfig('путь_запроса', $visibility['путь_запроса']);
  $блок->сохранить();
}
steve avatar
флаг in
Где вы берете массив $pages?
4uk4 avatar
флаг cn
$paths — это массив (где вы вносите коррективы). Чтобы было понятно, я объединяю код из предыдущего ответа и новый.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.