web-dev-qa-db-ja.com

標準を置き換えるNode Path in Drupal 8

私はまだすべてのSymfonyセマンティクスに不慣れです。ノードの正規URLを/article/[node-title]ではなく/node/[node-id]に変更する最も簡単な方法は何ですか?以下 このドキュメント コードを試してみました(少なくとも/article/[node-id]のようなURL構造を生成することを期待していました)

<?php
/**
 * @file
 * Contains \Drupal\example\Routing\ExampleRoutes.
 */

namespace Drupal\example\Routing;
use Symfony\Component\Routing\Route;
/**
 * Defines dynamic routes.
 */
class ExampleRoutes {

  /**
   * {@inheritdoc}
   */
  public function routes() {
    $routes = array();
    // Declares a single route under the name 'example.content'.
    // Returns an array of Route objects. 
    $routes['entity.node.canonical'] = new Route(
      // Path to attach this route to:
      '/article/{node}',
      // Route defaults:
      array(
        '_controller' => '\Drupal\node\Controller\NodeViewController::view',
        '_title' => 'Hello'
      ),
      // Route requirements:
      array(
        '_permission'  => 'access content',
      )
    );
    return $routes;
  }

}
?>

しかし、残念ながらそれは何も変えていません…

3
alexej_d

理論的にはサポートされていますが、これは可能ではありません。

ノードのタイトルに基づいてノードを確実にロードすることはできません。一意であるとは限りません。実用的なURLになるには、スペースの置換、小文字の小文字化など、いくつかの置換を行う必要があります。

Drupal 7.のように、パスエイリアスシステムを使用します。 pathautoの非公式ポート モジュールを維持しています。これにより、トークンパターンを構成して、各ノードのエイリアスを自動的に生成します here から取得できるtoken.moduleも必要です。

2
Berdir