为什么模型在路径和控制器中工作但在视图中不工作?

时间:2015-05-14 18:17:58

标签: php laravel laravel-4 laravel-5

我是一名非常有经验的laravel程序员,曾参与laravel 4.2的一些项目。但是我已经开始使用laravel 5了,有些事情让我烦恼,我已经花了好几个小时,而且我还没有能够解决这个问题。

每当我想从数据库表中获取模型并将其设置为变量以便使用它时,它似乎在routes.php或控制器文件中执行时它可以正常工作,但它没有&#39 ; t在视图文件中工作。

例如,这段简单的代码可以在路由和控制器中使用,但不能在视图文件中使用:

$user = App\Models\User::find(1); 
        echo $user->username;

如果我有一个不包含任何html的视图文件,除了上面的代码片段我得到了这个:请参阅图片http://i.imgur.com/WhRcxYl.png

但是如果我在视图文件中有html并且我使用相同的代码:

<html>
<head>
    <title>example</title>

</head>
<body>
    <? $user = App\Models\User::find(1); ?>
    <p>this doesn't work <?= $user->username; ?></p>    
</body>

我收到错误Undefined variable:user

我不知道,它可能是我看不到的非常小的东西,但我真的无法看到它。我已经建立了一个文件夹模型,并将模型放在该文件夹中..代码是正确的,除了在视图中,如果我像上面那样直接使用它,它可以在任何地方工作。该表填充了用户,并非空。

问题已经解决了。谢谢treeface,我实际上忽略了我没有启用php短标签。

1 个答案:

答案 0 :(得分:0)

将逻辑与表示分开通常是正确的做法,因此最好在控制器中设置变量,然后将变量传递给视图,但如果您想要或需要在视图中设置变量,则应使用{ {1}}标签用于设置变量。然后,您可以像通常使用Blade语法一样输出变量。

<?php ?>

输出:

<body>
    <?php $foo = 'bar'; ?>
    {{ $foo }}
</body>