web-dev-qa-db-ja.com

選択した言語のノードURLを取得する方法は?

複数の言語の配列を持つノードがあります。

_ [19] => Drupal\node\Entity\Node Object
        (
            [in_preview] => 
            [values:protected] => Array
                (
                    [vid] => Array
                        (
                            [x-default] => 19
                        )

                    [langcode] => Array
                        (
                            [x-default] => en
                            [ca] => ca
                        )
_

私はそのURLを次のように取得しています:

_$options = array('absolute' => TRUE);
$link = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => $key], $options);
_

print($link)は_http://test-d8.local/en/node/19_を提供しています。ここで、「ca」言語ではなく「en」言語のURLが必要です。つまり、_http://test-d8.local/ca/node/19_

特定の言語コードのノード翻訳を提供する方法はありますか?

この行$language = $entity->get('langcode')->value;は、選択リストから選択された言語の値を提供しています。

1
Sugandh Khanna

言語オプションを指定してtoUrl()を使用したい。

$node->toUrl('canonical', ['language' => $node->language()]);

残念ながら、現在toUrl()はアクティブな言語を自動的に考慮しません。

3
Berdir
$language = 'ca';
$link = $value->getTranslation($language)->url();
$title =  $value->getTranslation($language)->title->value;

これは私のために働いた。

2
Sugandh Khanna

次のようにノードの翻訳を取得できます。

$node = $node->getTranslation('ca');

そして、必要に応じて、次のようにリンクまたはURLを取得できます。

$link = $node->toLink();
$url = $node->toUrl();
1
Maouna