Laravel 5.2

时间:2016-05-10 04:53:31

标签: php laravel

我是PHP和Laravel的新手,我尝试构建简单的Web应用程序,以熟悉PHP和Laravel。我在刀片文件中收到了undefined variable。如果有人可以帮我解决这个问题,我将不胜感激。

基本上,我想要发生的是: 我有一个名为dashboard.blade.php的视图,在此视图中有一个文本字段和按钮。输入房间号码并单击按钮后,房间号码必须保存在数据库中,并且当前视图需要刷新,但这次,新房间必须显示在顶部。房间保存在数据库中没有问题,但当我尝试使用foreach循环检索它时,我得到'未定义的可变房间' 错误

我正在使用Laravel 5.2

关闭触发此操作的按钮(在dashboard.blade.php中)

<form action="{{ route('viewroom') }}" method="POST"> //route is viewroom
        Please Insert The New Room Number<br>
        <input type="text" name="roomid"/>
        <button type="submit">Add New Room</button>
        <input type="hidden" value="{{ Session::token() }}" name="_token"/>
</form>

路线档案

Route::post('/dashboard',[
    'uses' => 'RoomController@InsertRoom',
    'as' => 'viewroom'
]);

RoomController中使用的函数

public function InsertRoom(Request $request){
    $this->validate($request, [
        'roomid' => 'required | numeric | unique:insert_rooms',
    ]);

    $room = new InsertRoom();
    $room->roomid = $request['roomid'];
    $room->status = 0;
    $room->save();

    $rooms = InsertRoom::all();

    $request->session()->flash('alert-success', 'Room was successful added!');
    return view('dashboard', ['rooms' => $rooms]);
}

在dashboard.blade.php中:

<div class="border1">
    @if(isset($results))
        @foreach($rooms as $room)
            <a href="#">$room->roomid</a>
        @endforeach
    @endif
</div>

任何和所有帮助将不胜感激。谢谢

更新 我忘了澄清一下,我收到错误&#39; undefined variable $ rooms&#39;之前我使用if条件检查是否设置了$ errors。在我使用if(isset($ errors))之后我没有得到错误,但我想要显示的信息没有显示

更新2

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dashboard</title>

<style>
    h1{
        text-align: center;
    }

    .border1{
        border: dotted;
        border-color: red;
        text-align: center;
        padding: 20px;
    }

    .ulerror{
        text-align: center;
        color: red;
    }

    .flash-message{
        text-align: center;
        font-weight: bolder;
        color: lawngreen;
    }

    ul li{
        font-family: "Lucida Console";
        font-size: 24px;
        list-style: none;
        padding: 10px;
    }

    a{
        padding: 8px;
    }
</style>

</head>
<body>

<h1>Dashboard</h1>

<div class="border1">

    @if(isset($rooms))
        {{--{{ dd(isset($rooms)) }}--}}
        @foreach($rooms as $room)
            <a href="#">{{ $room->roomid }}</a>
        @endforeach
    @endif
    {{--<a href="{{ route('roomdetails', ['id' => '1', 'status' => 'free'])        }}">1</a> IGNORE THIS--}}

</div>

<br><br><br>

<div class="border1">
    <b>Insert a new Room</b>
    <br><br>
    <form action="{{ route('viewroom') }}" method="POST">
        Please Insert The New Room Number<br>
        <input type="text" name="roomid"/>
        <button type="submit">Add New Room</button>
        <input type="hidden" value="{{ Session::token() }}" name="_token"/>
    </form>
</div>

<div class="flash-message">
    @foreach (['danger', 'warning', 'success', 'info'] as $msg)
        @if(Session::has('alert-' . $msg))

            <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' .  $msg) }} <a href="{{ route('backhome') }}" class="close" data-dismiss="alert" aria-label="close">&times;</a></p>
        @endif
    @endforeach
</div> {{--flash message--}}

@if(count($errors) > 0)
    <div class="ulerror">
        <ul>
            @foreach($errors->all() as $error)
                {{ $error }}
            @endforeach
        </ul>
    </div> {{--error handling--}}
@endif

3 个答案:

答案 0 :(得分:3)

你应该试试

<div class="border1">
@if(isset($rooms))
    @foreach($rooms as $room)
        <a href="#">{{$room->roomid}}</a>
    @endforeach
@endif

答案 1 :(得分:0)

错误错误:会议室而不是结果。您尚未通过任何名为&#39;结果&#39;的变量。从您的控制器查看。

您只需要检查是否设置了结果对象(房间)。您可以使用以下任何一种方法来执行此操作。

所有将返回布尔结果为true或false。

@if($rooms)
    @foreach($rooms as $room)
        <a href="#">{{$room->roomid}}</a>
    @endforeach
@endif

OR

@if(!empty($rooms))
    @foreach($rooms as $room)
        <a href="#">{{$room->roomid}}</a>
    @endforeach
@endif

OR

@if(isset($rooms))
    @foreach($rooms as $room)
        <a href="#">{{$room->roomid}}</a>
    @endforeach
@endif

答案 2 :(得分:0)

而不是这样做:      返回视图(&#39;仪表板&#39;,[&#39; rooms&#39; =&gt; $ rooms]);

只需在获取查看功能中打印出所有房间。然后在你的insertRooms函数中做一个:     return redirect() - &gt; back();

相反,由于页面刷新,您的获取视图将自动打印出新值:-)

请开始使用紧凑方法将变量返回到您的视图,我最好练习正弦laravel 5.1: - )

此外,我建议您观看一些关于命名惯例的视频。祝你好运!