私はまだすべての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;
}
}
?>
しかし、残念ながらそれは何も変えていません…
理論的にはサポートされていますが、これは可能ではありません。
ノードのタイトルに基づいてノードを確実にロードすることはできません。一意であるとは限りません。実用的なURLになるには、スペースの置換、小文字の小文字化など、いくつかの置換を行う必要があります。
Drupal 7.のように、パスエイリアスシステムを使用します。 pathautoの非公式ポート モジュールを維持しています。これにより、トークンパターンを構成して、各ノードのエイリアスを自動的に生成します here から取得できるtoken.moduleも必要です。