繁体   English   中英

为什么我不能在我的 Laravel 项目中执行一些琐碎的 PHP 代码?

[英]Why can't I execute some trivial PHP code in my Laravel project?

我正在努力调试我正在构建的 Laravel 9 应用程序,以便更好地了解我的 controller 的 edit() 和 update() 方法是如何工作的,但我找不到任何描述如何在 VS Code 中调用 XDebug 的内容一个 Laravel 项目,所以我正在尝试通过一个视频来展示如何在 VS Code 中执行普通的 PHP 代码,但这也不起作用。

事实上,我什至无法在我的 web 浏览器中正确显示带有普通 PHP 的普通网页。 我不知道我是否只是度过了一个愚蠢的一天,或者我是否需要采取一些步骤让我的浏览器正确解释 PHP,而不是像对待大评论一样对待它。

这是我试图在浏览器中显示的带有 PHP 代码的网页:

<!DOCTYPE html>
<html lang="en">
    <body>
        <h1>My Glorious Title</h1>
        <?php
            echo "Hello world!";
        ?>
        <?php 
            $text = "Debugging fun with Laravel and PHP";
            echo $text;
            for ($ix=0; $ix<5; $ix++) {
                print( $ix);
            }
            echo "  ";
        ?>
    </body>
</html>

这是浏览器 (Firefox) 在我执行 CTRL-SHIFT-i 时看到的内容:

<!DOCTYPE html>
<html lang="en">
    <body>
        <h1>My Title</h1>
        <!--?php echo "Hello world!"; ?-->
        <!--?php 
            $text = "Debugging fun with Laravel and PHP";
            echo $text;
            for ($ix=0; $ix<5; $ix++) {
                print( $ix);
            }
            echo "  ";
        ?-->
    </body>
</html>

由于所有 PHP 已被注释掉,网页本身仅显示 h1 标签。

PHP 代码显然没有被识别,但我不明白为什么因为我的 Laravel 项目充满了 PHP 并且工作正常。

我的文件 test01.php 位于我项目的根目录中。 我使用管理员 ID 在 Windows 10 home 上运行,所以我看不出这是一个安全问题。 如何让我的浏览器将此识别为它应该执行的实际 PHP 代码?

更新:

我修改了我的源代码,使其完全是这样的:

<html lang="en">
    <body>
        <h1>My Title</h1>
        @php "Hello world!"; @endphp

        <?php 
            $text = "Debugging fun with Laravel and PHP";
            echo $text;
            for ($ix=0; $ix<5; $ix++) {
                print( $ix);
            }
            echo "  ";
        ?>
    </body>
</html>

这就是我在我的页面上得到的:

My Title
@php "Hello world!"; @endphp 

当我尝试在第一个 PHP 块周围使用“双胡子”语法时,如下所示:

<!DOCTYPE html>
<html lang="en">
    <body>
        <h1>My Title</h1>
        {{"Hello world!";}} 

        <?php 
            $text = "Debugging fun with Laravel and PHP";
            echo $text;
            for ($ix=0; $ix<5; $ix++) {
                print( $ix);
            }
            echo "  ";
        ?>
    </body>
</html>

我在我的网页上得到了这个:

My Title
{{"Hello world!";}} 

我在 PHP 代码周围放置的将其描述为 PHP 代码的内容根本无法识别。

您可能正在尝试在刀片模板中使用 PHP。 这是可能的,但您需要将 PHP 包装在@php@endphp中:

@php
    $i = 0;
    $i++;
    echo $i;
@endphp

在这里查看文档

显然,我昨天确实度过了一个“愚蠢的一天”,现在我已经按照各种答案中的一些建议正确执行了我的 PHP 代码。

这是我所做的:

  • 我删除了第一个 php 块,我尝试使用@php然后@endphp然后是{{ }}的块; 第二个 php 块没有改变,仍然使用<?php?>

  • 我将文件重命名为 test01.blade.php 而不是 test01.php。

  • 我将文件从项目的根目录移动到 views 文件夹。

  • 我创建了这条路线:

    Route::get('/test01', function () { return view('test01'); });

  • 我在终端 window 中执行npm run dev

  • 我在另一个终端 window 中执行php artisan serve

  • 我去了localhost:8000/test01 ,我的文件现在可以正常执行了。

感谢所有响应者帮助我重回正轨。 现在我只需要弄清楚为什么我还不能让 Debug 在我的小播放文件上运行,但如果我自己无法弄清楚,我会提出一个新问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM