如何修复此错误消息:未定义的变量:数据

时间:2017-07-13 07:56:15

标签: laravel

  

1e886a45102a3e4898f23b52cd7ca771第354行中的ErrorException:未定义的变量:data(查看:C:\ xampp \ htdocs \ soulfy_repo \ framework \ resources \ views \ soulfy \ setting.blade.php)

我应该在哪里放置代码来定义数据?

setting.blade.php

<form action="{{ action('HomeController@getBackgroundTheme')}}" method="post">
    <span class="setting-name">THEME</span>
    <!-- <form method="POST" action="/posts"> -->
    {{ csrf_field() }}
    <span class="setting-value center">

        <select name="menu">
            <option value="Landscape">Landscape</option>
            <option value="Lifestyle">Lifestyle</option>
            <option value="Music">Music</option>
            <option value="Office">Office</option>
            <option value="Hobby">Hobby</option>
            <option value="Politic">Politic</option>
            <option value="Building">Building</option>
        </select>
        <!-- <div style="width: 150px; height: 30px;"><input type="image" src="http://localhost/framework_freshway/public_html/images/submit.png" value="SUBMIT" width="10"> -->
        <a href="{{ Url('home/users') }}">List User</a>

        @foreach($data as $d)

            <tr>
                <td>
                    <img width="200px" height="200px" src="{{url('/')}}/uploads/{{$d->background}}"/>
                </td>
            </tr>

        @endforeach

        <input type="submit" value="Submit">
    </span>
    <br><br><br>

</form>

HomeController.php

public function getBackgroundTheme()
{
    $data = user::all();

    return view('setting', ['data' => $data]);
}

3 个答案:

答案 0 :(得分:0)

  • 解决问题: 在执行循环之前检查是否定义了$data

    @if (isset($data))
        @foreach($data as $d)
    
            <tr>
                <td>
                    <img width="200px" height="200px" src="{{url('/')}}/uploads/{{$d->background}}"/>
                </td>
            </tr>
    
        @endforeach
    @endif
    
  • 建议:在两个控制器操作中创建表单视图和发布表单。

答案 1 :(得分:0)

您应该传递一个空数组$ data,或者在使用之前检查是否设置了$ data。我个人更喜欢第二种方法。

@if(isset($data))
    @foreach($data as $d)
        <tr>
            <td>
                <img width="200px" height="200px" src="{{url('/')}}/uploads/{{$d->background}}"/>
            </td>
        </tr>
    @endforeach
@endif

答案 2 :(得分:0)

public function getBackgroundTheme()
{
$data = user::all();

  return view('setting')->with('data',$data);
}

您没有将变量传递给视图。您可以使用with方法,也可以compose