Laravel 5.1 $ this-> validate(...)抛出错误

时间:2015-10-07 09:13:34

标签: php validation laravel-5.1

我尝试使用laravel的验证(http://laravel.com/docs/5.1/validation)向我的资源控制器添加验证但是我收到此错误:

ErrorException in ValidatesRequests.php line 30:
Argument 1 passed to App\Http\Controllers\Controller::validate() must be an 
instance of Illuminate\Http\Request, 
instance of Illuminate\Support\Facades\Request given,
called in 
/Users/lextoc/Documents/Sites/partyrecycler/app/
Http/Controllers/MarkerController.php on line 30 and defined

这是控制器:

namespace App\Http\Controllers;

use Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Marker;

class MarkerController extends Controller
{
    ...

    public function create()
    {
        return view('markers.create');
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'name'  => 'required|max:255',
            'x'     => 'required',
            'y'     => 'required',
        ]);

        $marker=Request::all();
        Marker::create($marker);
        return redirect('markers');
    }

    ...
}

观点:

<h1>Create marker</h1>
@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
{!! Form::open(array('route' => 'markers.store')) !!}
    {!! csrf_field() !!}

    <div>
        Name
        <input type="text" name="name">
    </div>

    <div>
        x
        <input type="text" name="x">
    </div>

    <div>
        y
        <input type="text" name="y">
    </div>

    <div>
        <button type="submit">Create</button>
    </div>
{!! Form::close() !!}

我不知道为什么它使用了错误的Request类,为什么控制器中有两个被使用?

1 个答案:

答案 0 :(得分:2)

错误是由于包含标题:

尝试

use Illuminate\Http\Request;

而不是

use Request;

示例:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Marker;