0

次のようにLaravelでリソースを設定しましたroutes.php

Route::resource('users', 'UsersController');

を作成しUsersController、レイアウトを使用するように設定しました。

class UsersController extends BaseController {

    protected $layout = 'layouts.default';

    public function index()
    {
         $view = View::make('users.index');
         $this->layout->title = "User Profile"; 
         $this->layout->content = $view;
    }

}

を使用してアクセスするとhttp://localhost/myapp/users/index、次のエラーが表示されます。

Undefined variable: title

しかし、ルートを次のように手動で設定した場合:

Route::get('/users/index', array('as' => '/users/index', 'uses' => 'UsersController@index'));

それは正常に動作します。

なぜこれが起こるのか分かりますか?

編集:これらはビューです

default.blade.php

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>{{ $title }}</title>
    <link rel="stylesheet" href="{{ asset('assets/css/style.default.css') }}" type="text/css" />
</head>

<body>

{{ $content }}

</body>

</html>

ユーザー/index.php

<div>

Some content ...

</div>
4

2 に答える 2

1

問題は、実際にはルートの呼び出し方法にあると思います。

ドキュメント ( http://laravel.com/docs/controllers#resource-controllers ) を確認すると、 のルートがないことがわかります/resource/index。これは where $id = "index" として解析され/resource/{id}、関数を探しshow($id)ます。デフォルトのレイアウトを使用することになっていることはわかっていますが、タイトルを設定する show() 関数がないため、ビューにタイトルが渡されず、失敗します。

に行けばhttp://localhost/myapp/users大丈夫だと思います。

于 2013-09-27T16:35:25.220 に答える
0
class UsersController extends BaseController {

  protected $layout = 'layouts.default';

  public function index()
  {
    $data['title'] = "User Profile";

    $this->layout->content = View::make('users.index')
      ->withData($data);

    return $this->layout->content;          
  }

}

または

class UsersController extends BaseController {

  protected $layout = 'layouts.default';

  public function index()
  {
    $title = "User Profile";

    $this->layout->content = View::make('users.index')
      ->withData($title);

    return $this->layout->content;          
  }

}

しかし、$data 配列を使用するのは簡単です。これをビューで使用する場合、名前で参照できます。したがって、$data['title'] は $title で呼び出されます。

于 2013-09-27T16:10:38.113 に答える