Laravel:将变量从控制器传递到视图

时间:2015-04-22 06:55:21

标签: laravel-4

chatcontroller.php function returns variable to view:    
public function getChat()
    {
        $message = chat_messages::all();                    
        return View::make('home',compact($message));
    }   
this is my route:
Route::get('/getChat', array('as' => 'getChat','uses' => 'ChatController@getChat'));                                                                      
this is my home.blade.php:                                                           

@extends('layouts.main')
@section('content')
    <div class="container">
        <h2>Welcome to Home Page!</h2>
        <p> <a href="{{ URL::to('/logout') }}" > Logout </a></p>
        <h1>Hello <span id="username">{{ Auth::user()->username }} </span>!</h1>
        <div id="chat_window">
                
        </div>
        <input type="text" name="chat" class="typer" id="text" autofocus="true" onblur="notTyping()">
       
    </div>
<ul>
@foreach($message as $msg)
<li>
{{ $msg['sender_username']," says: ",$msg['message'],"<br/>" }}
</li>
@endforeach
</ul>
<script src="{{ asset('js/jquery-2.1.3.min.js') }}"></script>
<script src="{{ asset('js/chat.js') }}"></script>

@stop                                     

我正在尝试将select查询返回的结果发送到控制器进行查看。

当我从homecontroller.php执行此操作时,它工作正常。 如果我尝试从我定义的控制器传递它会给出错误消息:未定义的变量。

我使用了extends \ BaseController我还需要做什么来从视图中访问我的控制器变量。

如果可能,请建议一些教程。

3 个答案:

答案 0 :(得分:1)

验证路线以确保它使用新控制器:

Route::get('user/profile', array('uses' => 'MyDefinedController@showProfile'));

答案 1 :(得分:1)

首先检查你的路线,正如Matei Mihai所说。 将数据传递到视图有两种不同的方法;

$items = Item::all();

// Option 1
return View::make('item.index', compact('items'));

// Option 2
return View::make('item.index')->with('items', $items); // same code as below

// Option 3
View::share('item.index', compact('items'));
return View::make('item.index);

答案 2 :(得分:0)

你也可以这样做:

$this->data['items'] = Item::all();

return View::make('item.index', $this->data);