0

我一直在寻找谷歌和堆栈溢出,但我找不到有这个问题的人。据我所知,我不能使用 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 * @version 3.2.12

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

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

4

3 回答 3

3

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

截屏

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

于 2013-01-01T06:40:38.590 回答
0

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

于 2013-01-01T03:52:17.947 回答
0

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

于 2013-01-01T06:37:32.027 回答