Почему линк не кликабельный на странице?

Главные вкладки

Аватар пользователя nathan158 nathan158 7 июля в 23:19

Inspector показывает что на странице он есть:

<div class='search'>
......
  <а href='/paper/c/53' class='category-link'></a>
</div>

Но при клике не происходит переход на странцы, где я сделал ошибку?

<?php
public function build() {

    

$term $this->getConfiguration()['search']['#value'];

    

$facets_manager = \Drupal::getContainer()->get('facets.manager');
    
$facetsource_id 'search_api:views_page__category_facets_test__page_1';
    
$facets $facets_manager->getFacetsByFacetSourceId($facetsource_id);
    
$facets_manager->updateResults($facetsource_id);

    

$rows = [];

    foreach (

$facets as $facet) {
      
$facets_results $facet->getResults();
      foreach (
$facets_results as $result) {
        
$node_id $result->getRawValue();
        if (
$node $this->entityTypeManager->getStorage('node')->load($node_id)) {
          
$rows[] = [
            
'label' => $node->get('field_name')->value,
            
'link' => $node->get('field_custom_url')->value,
            
'count' => $result->getCount(),
          ];
        }
        else {
          
$rows[] = [
            
'label' => $this->t("category doesn't set"),
            
'link' => "#",
            
'count' => $result->getCount(),
          ];
        }
      }
    }

    

$build['container'] = [
      
'#type' => 'container',
      
'#attributes' => [
        
'class' => ['search-results-categories-wrapper'],
      ],
    ];

    foreach (

$rows as $row) {

      

$build['container'][] = [
        
'#type' => 'container',
        
'#attributes' => [
          
'class' => ['search-results-categories-item'],
        ],
        
'label' => [
          
'#type' => 'container',
          
'#markup' => $row['label'],
          
'#attributes' => [
            
'class' => ['category-label'],
          ],
        ],
        
'count' => [
          
'#type' => 'container',
          
'#markup' => $row['count'],
          
'#attributes' => [
            
'class' => ['category-count'],
          ],
        ],
        
'link' => [
          
'#type' => 'link',
          
'#url' => Url::fromUserInput($row['link'], ['text' => $term]),
          
'#attributes' => [
            
'class' => ['category-link'],
          ],
        ],
      ];
    }
    return 
$build;

  }

?>

Комментарии

Аватар пользователя OldWarrior OldWarrior 7 июля в 23:40

nathan158 wrote: '#url' => Url::fromUserInput($row['link'], ['text' => $term])

Ключа 'text' нет в допустимом массиве опций для любых методов Url::.

Кроме того, непонятно, что именно у вас приходит в параметр $user_input (1-й параметр метода Url::fromUserInput). Поскольку вы не пишете, в каком формате указывается URL в поле 'field_custom_url'. Однако, из документации для метода:

string $user_input: User input for a link or path. The first character must be one of the following characters:

'/': A path within the current site. This path might be to a Drupal route (e.g., '/admin'), to a file (e.g., '/README.txt'), or to something processed by a non-Drupal script (e.g., '/not/a/drupal/page'). If the path matches a Drupal route, then the URL generation will include Drupal's path processors (e.g., language-prefixing and aliasing). Otherwise, the URL generation will just append the passed-in path to Drupal's base path.
'?': A query string for the current page or resource.
'#': A fragment (jump-link) on the current page or resource.

То есть - первый параметр должен начинаться со слеша, если это путь.

PS. dpm() в помощь.