传递给App \ Http \ Controllers \ ProfileController :: store()的参数2必须是App \ Http \ Requests \ CreateProfileRequest的实例,没有给出

时间:2015-05-03 20:13:09

标签: php forms laravel request

我已经用这个错误拉了我的头发几个小时,但是不明白它为什么这样做。我之前在Laravel上做过这个,但它似乎并不想工作。

这是我试图开始工作的方法:

public function store($name, CreateProfileRequest $request)
{
    $user = User::whereName($name)->first();


    $house = new House();
    $house->first_line_address = $request->get('first_line_address');
    $house->city = $request->get('city');
    $house->postcode = $request->get('postcode');

    $user->house()->save($house);

    return redirect('/');

}

这是我试图从中获取数据的表单:

{!! Form::model($user->house, ['route' => 'profile.store']) !!}

    <div class ="form-group">
        {!! Form::label('first_line_address', 'First line of address:') !!}
        {!! Form::text('first_line_address', null, ['class' => 'form-control'])!!}
    </div>

    <div class ="form-group">
        {!! Form::label('city', 'Town/City:') !!}
        {!! Form::text('city', null, ['class' => 'form-control'])!!}
    </div>

    <div class ="form-group">
        {!! Form::label('postcode', 'Postcode:') !!}
        {!! Form::text('postcode', null, ['class' => 'form-control'])!!}
    </div>

    <div class ="form-group">
        {!! Form::submit('Update Profile', ['class' => 'btn btn-primary']) !!}
    </div>

    {!! Form::close() !!}
</div>

没关系,直到我尝试存储它然后我

传递给App \ Http \ Controllers \ ProfileController :: store()的参数2必须是App \ Http \ Requests \ CreateProfileRequest的实例,没有给出

这是我的路线:

$router->resource('profile', 'ProfileController');

| GET | HEAD |个人资料| profile.index |应用程序\ HTTP \控制器\ ProfileController可@指数    | |

| | GET | HEAD |个人资料/创建| profile.create |应用程序\ HTTP \控制器\ ProfileController可@创建    | |

| | POST |个人资料| profile.store |应用程序\ HTTP \控制器\ ProfileController可@店    | |

| | GET | HEAD |个人资料/ {profile} | profile.show |应用程序\ HTTP \控制器\ ProfileController可@秀    | |

| | GET | HEAD |个人资料/ {个人资料} /编辑| profile.edit |应用程序\ HTTP \控制器\ ProfileController可@编辑    | |

| | PUT |个人资料/ {profile} | profile.update |应用程序\ HTTP \控制器\ ProfileController可@更新    | |

| |补丁|个人资料/ {profile} | |应用程序\ HTTP \控制器\ ProfileController可@更新    | |

| |删除|个人资料/ {profile} | profile.destroy |应用程序\ HTTP \控制器\ ProfileController可@破坏    | |

如果有人想到如何摆脱这种荒谬的错误,我将永远感激不尽:)

2 个答案:

答案 0 :(得分:3)

如果希望控制器方法可以使用SendKeys("user"); SendKeys("{TAB}"); SendKeys("password"); SendKeys("~"); // Enter 的实例,则它必须是第一个参数,后跟通过URI传递的其他参数。扭转方法。

答案 1 :(得分:2)

资源控制器/路由的store()方法不接受任何路由参数。这意味着Laravel无法通过$name论证。我想你在请求数据本身传递了这个名字。如果是这种情况,您可以使用$request->input('name')访问它。

无论如何,您应该从方法签名中删除$name

public function store(CreateProfileRequest $request)