使用laravel5调用null上的成员函数isvalid()

时间:2015-12-16 05:58:30

标签: laravel-5.1

我在SiteadminController.php第679行中遇到此错误FatalErrorException: 在null上调用成员函数isvalid(),而不是在update.ifout上传图像时将其运行。

控制器

public function siteadmin_update_banner_submit(Request $request)
{
    $post = $request->all();

    $id = $post['id'];
    // $banner_title = $post['banner_title'];
    //$banner_redirecturl = $post['banner_redirecturl'];
    $banner_image = Input::file('banner_image');
    $banner_title = $request->input('banner_title');
    $banner_redirecturl = $request->input('banner_redirecturl');

    $v = validator::make($request->all(),
        [
            //'banner_title' => 'required',
            //'banner_redirecturl' => 'required',
            //'banner_image' => 'required',
        ]
    );
    if ($v->fails()) {
        return redirect()->back()->withErrors($v->errors());
    } else {

        if ($banner_image->isvalid()) {
            $extension = $banner_image->getClientOriginalName();
            $move_img = explode('.', $extension);
            $fileName = $move_img[0] . str_random(8) . "." . $move_img[1];
            $destinationPath = '../assets/bannerimage/';
            $uploadSuccess = Input::file('banner_image')->move($destinationPath, $fileName);

            $data = [
                'banner_title'       => $banner_title,
                'banner_redirecturl' => $banner_redirecturl,
                'image'              => $fileName,
            ];

            $ch = DB::table('le_banner')->where('banner_id', $post['id'])->update($data);
            if ($ch > 0) {
                Session::flash('message_update', 'Record Updated Successfully');

                return redirect('siteadmin_managebanner');
            } else {
                return Redirect('siteadmin_editbanner');
            }
        }
    }
}

视图

 <form id="editproduct" onsubmit="return validateForm()"  method="POST" action="{{action('SiteadminController@siteadmin_update_banner_submit')}}" enctype="multipart/form-data">

&#34;&GT;   banner_id?&gt;&#34;&gt;

                <!-- text input -->
                <div class="form-group">
                  <label>Banner Title*</label>
                  <input type="text" class="form-control" placeholder="Banner Title" name="banner_title" value="<?=$row->banner_title ?>" id="banner_name">
                </div>
               <div class="form-group">
                  <label>Edit Banner Image</label>
                  <input type="file" id="banner_image" name="banner_image">
                  <img src="{{ url('../assets/bannerimage/').'/'.$row->image}}" style="height:90px;">

                </div>
                <div class="form-group">
                  <label>Redirect URL*</label>
                  <input type="text" class="form-control" placeholder="Banner URL" name="banner_redirecturl" value="<?=$row->banner_redirecturl ?>" id="banner_redirecturl">
                </div>

              <div class="form-group">
                <div class="col-sm-2">


                    <input type="submit" name="submit" value="Update" class="btn btn-block btn-success">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">

                    <input type="reset" name="submit" value="Cancel" class="btn btn-block btn-danger">
                </div>
              </div>

              </form>

3 个答案:

答案 0 :(得分:0)

您将收到此错误,因为请求中不存在该文件。

将您的if语句更改为:

if ($reqest->hasFile('banner_image') && $banner_image->isvalid())

另外,请确保您的表单打开标记中包含enctype="multipart/form-data",例如

<form method="POST" enctype="multipart/form-data">

希望这有帮助!

答案 1 :(得分:0)

分配$ buffered_image变量时遇到问题。检查您是否在表单中启用了文件上传(html)

答案 2 :(得分:0)

如果请求值为空,则应使用:

if (Input::hasFile('banner_image'))

之前

if ($banner_image->isvalid())

让我知道