質問させてください。
今 Laravel を使ってサイトを構築していまして、svg コードを html の<body>
直下にインラインで書き込みたいと思っております。
下記のようにそのままコードを書けばいいのですが、それだと svg を編集した後に毎回コピペするのが手間なので直接ファイルを読み込ませたいです。
html
1<body> 2<svg> 3 <defs> 4 <symbol> 5 <path d=""></path> 6 <path d=""></path> 7 </symbol> 8 <symbol> 9 <path d=""></path> 10 <path d=""></path> 11 </symbol> 12 </defs> 13</svg>
通常の php でしたら下記のように include_once()
でうまく読み込むことができるのですが、
php
1// index.php 2<body> 3<?php include_once('/images/hoge.svg'); ?>
Laravel の blade で include_once を使うとなぜかエラーになってしまい読み込めませんでした。
hoge.svg ファイルの場所は public/images/hoge.svg
になります。
php
1// Laravel の index.blade.php 2<body> 3<?php include_once('/images/hoge.svg'); ?>
// エラーメッセージ include_once(/images/hoge.svg): failed to open stream: No such file or directory
パスの指定の仕方が間違っているかと思い、画像ファイルを読み込むときは asset()
を使う方が良いとある参考サイトに書かれていたのを思い出し、下記のようにしてみたのですがこれもエラーになってしまいました・・・
php
1// index.blade.php 2<body> 3<?php include_once(asset('/images/hoge.svg')); ?>
// エラーメッセージ include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0
また asset() の代わりに url()
関数を使っても同じ結果でした。
php
1// index.blade.php 2<body> 3<?php include_once(url('/images/hoge.svg')); ?>
調べたところ Laravel には @include()
というものもあるらしく、それで行けるかなと思って試してみたのですがこれもダメでした。
php
1// index.blade.php 2<body> 3@include('/images/hoge.svg')
// エラーメッセージ View [.images.hoge.svg] not found.
エラーの原因が全く分からず途方に暮れております・・・
svg のソースを blade で読み込む場合 include_once は使わない方がいいのでしょうか。
もし良い解決方法をお分かりの方がいらっしゃいましたらご教授いただけると助かります。
よろしくお願いいたします。
■ 開発環境
・CentOS 7.6
・Vagrant 2.2.10
・PHP 7.3.22
・Laravel 8.35.1
回答1件
あなたの回答
tips
プレビュー