0

私はグーグルとスタックオーバーフローを探し回ってきましたが、この問題を抱えている人を見つけることができません. 私が知る限り、Blade 変数 {{ $likethis }} を使用できないか、作成中のレイアウトでレンダリングの問題が発生します。二重括弧変数を除くすべては、レイアウトなどで機能します。ここにいくつかのコードがあります:

渡される変数は「タイトル」です。

<?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 に答える