在null上调用成员函数getRealPath()

时间:2018-04-04 03:56:21

标签: laravel laravel-5 laravel-5.5

我想询问如果没有上传文件但是按下上传按钮我怎么能收到错误信息。如果getRealPath为空,如何发出错误消息?

public function importExcel()
    {
        if (empty(Input::file('import_file')->getRealPath())) {
            return back()->with('success','No file selected');
        }
        else {
        $path = Input::file('import_file')->getRealPath();
        $inserts = [];
        Excel::load($path,function($reader) use (&$inserts)
        {
            foreach ($reader->toArray() as $rows){
                foreach($rows as $row){
                    $inserts[] = ['biometrics' => $row['biometrics'], 'first_name' => $row['first_name'], 'last_name' => $row['last_name'], 'date' => $row['date'], 'emp_in' => $row['emp_in'], 'emp_out' => $row['emp_out']];
                }
            }
        });

        if (!empty($inserts)) {
            DB::table('attendances')->insert($inserts);
            return back()->with('success','Inserted Record successfully');                  
        }


        return back();
        }

    }

2 个答案:

答案 0 :(得分:1)

您可以设置如下所示的错误消息

返回redirect() - > back() - > with('错误','未选择文件');

然后在laravel文档中显示刀片中的错误消息。 它在会话中存储消息,您可以在刀片文件中轻松显示sesssion消息,如下所示

@if (count($errors) > 0)
    <!-- Form Error List -->
    <div class="alert alert-danger error">
        <strong>Whoops! Something went wrong!</strong>

        <br><br>

        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

答案 1 :(得分:1)

您可以在调用getRealPath()函数之前放置一个if

if( Input::file('import_file') ) {
    $path = Input::file('import_file')->getRealPath();
} else {
    return back()->withErrors(...);
}