如何从控制器 return 到 DOM 一个字符串变量,该变量包含 src 中带有 asset() 函数的 html 图像标签?

How to return to the DOM a string variable from controller that contains an html image tag with asset() function in src?

我遇到了 Laravel 9 的问题。 在我的控制器中,我创建了一个变量,它在引号内包含要返回到视图的 html 代码。

我无法确定应该在何处使用单引号和双引号或反引号,以便正确编译图像 src 中的 {{asset()}}。

现在我的图像 url 在控制台中看起来像这样: http://127.0.0.1:8000/%7B%7B%20asset(storage/upload/test2-png.png)%20%7D%7D

这是控制台中的错误:

GET http://127.0.0.1:8000/%7B%7B%20asset(storage/upload/test2-png.png)%20%7D%7D 404 (Not Found)

这里是我说的变量:

$celebrityDetailsContent = `
                @if(isset($celebrityClicked))
                    <div id="celebrity_text_and_picture_container" class="w-100 p-3">
                        <img src="{{ asset('storage/upload/'.{$celebrityClicked->image}) }}" class="float-start img-border-radius img-thumbnail w-50 m-3" alt="Celebrity photo" title="Celebrity photo">
                        <p class="fw-bold">{$celebrityClicked->firstname} {$celebrityClicked->lastname}</p>
                        <p class="text-start">{$celebrityClicked->description}</p>
                    </div>
                @else 
                    <h2 class="fw-bold">Click on a celebrity to display details</p>
                @endif
            `;

            return $celebrityDetailsContent;

感谢您的帮助。

不要在您的控制器中使用 {{ }}。它仅适用于您的 blade 文件。试试这个:

if (isset($celebrityClicked)) {
    $celebrityDetailsContent = '
                <div id="celebrity_text_and_picture_container" class="w-100 p-3">
                    <img src="' . asset('storage/upload/' . $celebrityClicked->image) . '" class="float-start img-border-radius img-thumbnail w-50 m-3" alt="Celebrity photo" title="Celebrity photo">
                    <p class="fw-bold">' . $celebrityClicked->firstname . ' ' . $celebrityClicked->lastname . '</p>
                    <p class="text-start">' . $celebrityClicked->description . '</p>
                </div>';
} else {
    $celebrityDetailsContent = '<h2 class="fw-bold">Click on a celebrity to display details</p>';
}

return $celebrityDetailsContent;