【问题标题】:Argument 2 passed to App\Http\Controllers\ProfileController::store() must be an instance of App\Http\Requests\CreateProfileRequest, none given传递给 App\Http\Controllers\ProfileController::store() 的参数 2 必须是 App\Http\Requests\CreateProfileRequest 的实例,没有给出
【发布时间】:2015-07-13 04:10:04
【问题描述】:

我已经为这个错误拉了几个小时了,但不明白为什么会这样。我以前在 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');

|得到|头|简介 |简介.index |应用\Http\Controllers\ProfileController@index | |

| |得到|头|个人资料/创建 | profile.create |应用\Http\Controllers\ProfileController@create | |

| |发布 |简介 |个人资料商店 |应用\Http\Controllers\ProfileController@store | |

| |得到|头|个人资料/{个人资料} | profile.show |应用\Http\Controllers\ProfileController@show | |

| |得到|头|个人资料/{个人资料}/编辑 |个人资料. 编辑 |应用\Http\Controllers\ProfileController@edit | |

| |放 |个人资料/{个人资料} | profile.update |应用\Http\Controllers\ProfileController@update | |

| |补丁 |个人资料/{个人资料} | |应用\Http\Controllers\ProfileController@update | |

| |删除 |个人资料/{个人资料} | profile.destroy |应用\Http\Controllers\ProfileController@destroy | |

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

【问题讨论】:

  • 尝试颠倒参数的顺序:store(CreateProfileRequest $request, $name)
  • 谢谢!反转但最终以缺少 App\Http\Controllers\ProfileController::store() 的参数 2
  • 你的路线怎么样?
  • $router->resource('profile', 'ProfileController');
  • @lukasgeiter 我遇到了类似的问题。但是在更改顺序时,错误消失了。为什么顺序很重要?

标签: php forms laravel request


【解决方案1】:

资源控制器/路由的store() 方法不采用任何路由参数。这意味着 Laravel 没有任何东西可以作为 $name 参数传递。我想您是在请求数据本身中传递名称。如果是这种情况,您可以使用$request-&gt;input('name') 访问它。

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

public function store(CreateProfileRequest $request)

【讨论】:

  • 非常感谢!你是救生员啊哈!如果可以的话,我会给你一个赞成票
【解决方案2】:

如果您希望 Request 的实例可用于您的控制器方法,它必须是第一个参数,然后是通过 URI 传递的其他参数。反转方法。

【讨论】:

  • 刚刚反转,但最终得到了 App\Http\Controllers\ProfileController::store() 的缺少参数 2
  • 你能编辑你的问题并包括控制器定义和路由吗?
  • 谢谢!!允许可选参数,即 {user?}
猜你喜欢
  • 2017-09-26
  • 2023-03-09
  • 2020-07-14
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2018-01-21
相关资源
最近更新 更多