Verified Commit e46f1e26 authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #2567745 by mohit_aghera, smustgrave, quietone, andypost, dww, alexpott:...

Issue #2567745 by mohit_aghera, smustgrave, quietone, andypost, dww, alexpott: \Drupal\taxonomy\Plugin\views\field\TermName::getItems should work with links

(cherry picked from commit e3f208ee)
parent 8ec568f2
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -23,9 +23,10 @@ public function getItems(ResultRow $values) {
    if ($this->options['convert_spaces']) {
      foreach ($items as &$item) {
        // Replace spaces with hyphens.
        $name = $item['raw']->get('value')->getValue();
        // @todo Add link support https://www.drupal.org/node/2567745
        $item['rendered']['#context']['value'] = str_replace(' ', '-', $name);
        $name = str_replace(' ', '-', $item['raw']->get('value')->getValue());
        empty($this->options['settings']['link_to_entity']) ?
          $item['rendered']['#context']['value'] = $name :
          $item['rendered']['#title']['#context']['value'] = $name;
      }
    }
    return $items;
+14 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Drupal\Tests\taxonomy\Functional\Views;

use Drupal\Core\Link;
use Drupal\views\Views;

/**
@@ -48,6 +49,19 @@ public function testTermNameField() {

    $this->assertEquals(str_replace(' ', '-', $this->term1->getName()), $view->getStyle()->getField(0, 'name'));
    $this->assertEquals($this->term2->getName(), $view->getStyle()->getField(1, 'name'));

    // Enable link_to_entity option and ensure that title is displayed properly.
    $view = Views::getView('test_taxonomy_term_name');
    $display =& $view->storage->getDisplay('default');
    $display['display_options']['fields']['name']['convert_spaces'] = TRUE;
    $display['display_options']['fields']['name']['settings']['link_to_entity'] = TRUE;
    $view->storage->invalidateCaches();
    $this->executeView($view);

    $expected_link1 = Link::fromTextAndUrl(str_replace(' ', '-', $this->term1->getName()), $this->term1->toUrl());
    $expected_link2 = Link::fromTextAndUrl($this->term2->getName(), $this->term2->toUrl());
    $this->assertEquals($expected_link1->toString(), $view->getStyle()->getField(0, 'name'));
    $this->assertEquals($expected_link2->toString(), $view->getStyle()->getField(1, 'name'));
  }

}