【问题标题】:laravel unable to render variableslaravel 无法渲染变量
【发布时间】:2012-12-15 23:14:04
【问题描述】:

我一直在寻找谷歌和堆栈溢出,但我找不到有这个问题的人。据我所知,我不能使用 Blade 变量 {{ $likethis }} 或者我正在创建的布局中出现渲染问题。除了双括号变量之外的所有内容都适用于布局等。这是一些代码:

传递的变量是'title'。

<?php 

class Add_Controller extends Base_Controller {
    public $restful = true;

    public function get_recipe(){
        return View::make('add.recipe', array('title' => 'Add A Recipe'));
        // I've also tried with() and others.
    }
}

布局:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>{{ $title }}</title>
    <link rel="stylesheet" href="{{ URL::to('css/style.css') }}">
    <link href='http://fonts.googleapis.com/css?family=Libre+Baskerville|Domine|Donegal+One' rel='stylesheet' type='text/css'>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="{{ URL::to('js/functions.js') }}"></script>
</head>
<body>
    @yield('content')
</body>
</html>

食谱页面:

@layout('layouts.default')
@section('content')
    <div id="wrapper">
        <header><div id="icon"></div></header>
        <div id="create">
            <div class="inline">
                <input type="text" id="title" name="title" value="Title">
            </div>
            <div>
                <label for="serving">Servings</label>
                <input type="text" name="serving" id="serving" value="2">
            </div>

            <div id="ingredients">
                <div class="ingredient">
                    <div class="inline">
                        <input type="text" class="name" name="name" value="Ingredient">
                    </div>
                    <div class="inline">
                        <input type="text" class="amt" name="amount" value="0">
                    </div>
                    <div class="inline">
                        <select name="unit" class="unit">
                            <option value="lb">Pounds</option>
                            <option value="oz">Ounces</option>
                        </select>
                    </div>
                    <div class="inline">
                        <div class="add-ingr">&#43</div>
                    </div>
                </div>
            </div>
            <input type="button" id="create" name="create" value="Create">
        </div>
    </div>
@endsection

我得到的错误:

Unhandled Exception
Message:

Error rendering view: [layouts.default]

Undefined variable: title

Location:

/home/daevskii/public_html/websites/sbr/storage/views/9e4501d6d0479b217301c46cfb8cbcfd on line 5

Stack Trace:

#0 /home/daevskii/public_html/websites/sbr/laravel/laravel.php(42): Laravel\Error::native(8, 'Undefined varia...', '/home/daevskii/...', 5)
#1 /home/daevskii/public_html/websites/sbr/laravel/view.php(386) : eval()'d code(5): Laravel\{closure}(8, 'Undefined varia...', '/home/daevskii/...', 5, Array)
#2 /home/daevskii/public_html/websites/sbr/laravel/view.php(386): eval()
#3 /home/daevskii/public_html/websites/sbr/laravel/blade.php(71): Laravel\View->get()
#4 [internal function]: Laravel\{closure}(Object(Laravel\View))
#5 /home/daevskii/public_html/websites/sbr/laravel/event.php(199): call_user_func_array(Object(Closure), Array)
#6 /home/daevskii/public_html/websites/sbr/laravel/event.php(138): Laravel\Event::fire('laravel.view.en...', Array, true)
#7 /home/daevskii/public_html/websites/sbr/laravel/view.php(348): Laravel\Event::until('laravel.view.en...', Array)
#8 /home/daevskii/public_html/websites/sbr/laravel/view.php(386) : eval()'d code(36): Laravel\View->render()
#9 /home/daevskii/public_html/websites/sbr/laravel/view.php(386): eval()
#10 /home/daevskii/public_html/websites/sbr/laravel/blade.php(71): Laravel\View->get()
#11 [internal function]: Laravel\{closure}(Object(Laravel\View))
#12 /home/daevskii/public_html/websites/sbr/laravel/event.php(199): call_user_func_array(Object(Closure), Array)
#13 /home/daevskii/public_html/websites/sbr/laravel/event.php(138): Laravel\Event::fire('laravel.view.en...', Array, true)
#14 /home/daevskii/public_html/websites/sbr/laravel/view.php(348): Laravel\Event::until('laravel.view.en...', Array)
#15 /home/daevskii/public_html/websites/sbr/laravel/view.php(590): Laravel\View->render()
#16 /home/daevskii/public_html/websites/sbr/laravel/response.php(246): Laravel\View->__toString()
#17 /home/daevskii/public_html/websites/sbr/laravel/laravel.php(180): Laravel\Response->render()
#18 /home/daevskii/public_html/websites/sbr/public/index.php(34): require('/home/daevskii/...')
#19 {main}

* @package Laravel * @版本 3.2.12

如果我取出 {{ $title }},我不会收到任何错误...但是我也没有使用变量:-\ 提前致谢!!

[回答] 我有一个路线问题没有在这里发布,但答案在我发的这个 laravel 论坛帖子中:http://forums.laravel.com/viewtopic.php?pid=23383#p23383

【问题讨论】:

  • 您在上面显示的刀片布局的文件名(和路径)是什么?
  • 好问题;应用程序 > 视图 > 布局 > default.blade.php
  • 嵌套视图中的变量不会传递给布局。
  • 我不知道那个 itachi,请参阅下面我对 Javier 的评论。这似乎可行,但对我不起作用。
  • 要在布局中设置标题试试 $this->layout->title ='something';

标签: php syntax laravel


【解决方案1】:

我相信您传递的变量仅适用于该视图而不是布局。如果要将变量传递给模板,请查看视图作曲家。

【讨论】:

  • 这个视频由 andrew perkins 展示,除非我遗漏了什么。查看 3:34 - 4:22(ish) 的视频youtube.com/watch?v=lceNwQf-ufY&list=PL09BB956FCFB5C5FD
  • 当然,我在错误粘贴之前添加了。请注意,我正在使用部分。我在布局中尝试了 {{content}},但同样的问题(在其他地方进行了必要的更改)...
【解决方案2】:

你需要使用 $this->layout->title ='something'; 在返回视图之前在您的控制器中。

【讨论】:

  • 问题不在代码中,查看TheShiftExchange的回答。
【解决方案3】:

问题出在其他地方 - 不在您上面发布的代码中。我刚刚将您的整个代码复制并粘贴到全新安装的 Laravel 3.2.12 中 - 它工作正常;

因此 - 如果我是你 - 我会重新下载当前的 Laravel 3.2.12,看看你是否可以复制并粘贴上面的代码以使其工作。如果它确实有效,那么您的其他“安装”会以某种方式被窃听。如果它不起作用,那么您的开发服务器有问题。

【讨论】:

  • 谢谢。我知道有人最终会发现我的代码是正确的……现在可以开始解谜了。首先我用的是3.2.12,贴在文末。我会尝试重新安装 3.2.12。
  • 新安装的结果相同。谁能想到可能导致这种情况的原因?
  • 这是一个路线问题......我的错。我已经用答案更新了我的帖子,并将您标记为正确!
猜你喜欢
  • 2021-03-09
  • 2019-07-24
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
相关资源
最近更新 更多