紐があります
$directory = "/home/ .../sites/default/files..."
私は絶対URLを取得しようとしました:
$MYURL = Url::fromUri("base://".$directory);
それは例外につながります!
誰かが文字列からURLを取得するために熱く説明できますか?
あなたのコメントのためのThx、
しかし、私はコアモジュールを調査することで答えを見つけました:
preg_match('/sites(.*)/',$directory,$matches);
$url_new = $matches[1];
$MYURL = Url::fromUri('base:/sites'.$url_new, array('absolute' => TRUE))->toString();
これが他の人にも役立つことを願っています!
その文字列だけに基づいて、URLを取得することはありません。現在のサイトのURLをどのように取得するのですか?
Drupalでは必要ありません。Ivanがコメントで推奨したように、
これは、ファイルがDrupalでアップロードされ、URIがある場合に行う方法です。
file_create_url($path)
https://api.drupal.org/api/drupal/core!includes!file.inc/function/file_create_url/8
URIがない場合(たとえば、テーマ内のファイルにリンクする必要がある場合)、次を使用します。
drupal_get_path('theme', 'your_theme');
https://api.drupal.org/api/drupal/core%21includes%21bootstrap.inc/function/drupal_get_path/8
次に、現在の$ディレクトリのように、サーバーのルートに対して相対的ではなく、リンクテーマに対して相対的と組み合わせます。
$directory = "files/myfile.png";
次に、それらを一緒にジャムします。
$my_url = drupal_get_path('theme', 'your_theme')."/".$directory;
何らかの理由で完全なサイトURLが必要な場合は、global $base_url;
(Drupalのグローバル変数)を使用するか、チェックアウトしてください https://stackoverflow.com/a/14500505/430191