(1/1)FatalErrorException在laravel 5.4中调用null上的成员函数all()

时间:2017-07-22 03:36:57

标签: laravel-5.4

4,我提交了一份表格,我想验证其字段,发生了什么,当我提交表格时,这就是它的内容

 (1/1) FatalErrorException

Call to a member function all() on null

这是我的代码

$validator = app('validator')->make($this->request->all(),[
            'postTitle' => 'required',
            'postContent' =>'required']);

在laravel 5.2中,此验证器运行良好,但在laravel 5.4中它返回null 有人可以帮我解决这个问题吗? 任何帮助都非常感谢。 TIA

这是我的完整代码

<?php

namespace App\Repositories;
use App\Repositories\Contracts\addPostRepositoryInterface;
use Validator;
use Illuminate\Http\Request;

use DB;
use Session;
use Hash;

class addPostRepository implements addPostRepositoryInterface{

    protected $request;

    // Intialize request instance
    public function __contruct(Request $request){
        $this->request = $request;
    }


    public function addPosts(Request $request){
        //validate posts
        echo "test";
        $validator = Validator::make($request->all(), [
            'postTitle' => 'required',
            'postContent' =>'required',
        ]);


        //if validation fails return error response
        if($validator->fails())
            return redirect()->route('get.addPost')->withErrors($validator)->withInput();

        try{


        }catch(\Exception $e){
            return redirect()->route('get.addPost')->withErrors(["error"=>"Could not add details! Please try again."])->withInput();
        }


    }


    public function postCreate($screen){
        switch($screen){
            case 'add':
            return $this->addPosts($screen);
            break;
        }
    }

    //getAddPost View
    public function getAddPost(){
        return view('addPost');
    }

}

2 个答案:

答案 0 :(得分:2)

似乎是方法注入(在构造函数中)或其他问题。

您可以尝试在本地(addPosts())函数上创建请求对象。 请尝试以下替代解决方案。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/adapter_expandable_listview_header_textview"
        android:layout_width="match_parent"
        android:text="Header"
        android:textStyle="bold"
        android:textSize="14sp"
        android:textColor="@color/textColorSecondary"
        android:layout_height="wrap_content"
        android:layout_margin="16dp" />
</LinearLayout>

答案 1 :(得分:0)

根据您提供的信息,我将向您演示如何在Laravel 5.4中正确验证请求

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'postTitle' => 'required',
        'postContent' =>'required',
    ]);

    if ($validator->fails()) {
        return redirect('your.view')
                    ->withErrors($validator)
                    ->withInput();
    }

    // Store the blog post...
}

这将在任何需要的地方成功验证您的请求。如果验证失败,您将转发到您的视图,并显示相应的错误。

确保use Validator;位于文件顶部。

有关详细信息,请阅读https://laravel.com/docs/5.4/validation