我发送处理输入数据并更新记录的PUT请求,但我得到了上述响应。然而,问题似乎不是路线,因为如果我在dd($user)
行之后$user = User::whereId($id)->firstOrFail();
,我会正确地返回对象。
然而,当需要验证它时,它会抛出此错误。
# routes
Route::resource('users', 'UsersController', ['only' => ['index', 'show', 'update']]);
# api call
PUT /users/2
# controller
public function update($id)
{
$user = User::whereId($id)->firstOrFail();
$input = Input::all();
$this->userForm->validate($input);
$user->fill($input)->save();
return $user->toJson();
}
# userForm class
<?php namespace Olp\Forms;
use Laracasts\Validation\FormValidator;
class UserForm extends FormValidator {
protected $rules = [
'email' => 'required|email|unique:users',
'password' => 'required',
'password_confirmation' => 'required|same:password',
'firstname' => 'required',
'lastname' => 'required',
'schoolname' => 'required',
'address1' => 'required',
'address2' => 'required',
'postcode' => 'required',
'city' => 'required'
];
}
并在我的UserController中:
use Olp\Forms\UserForm;
class UsersController extends \BaseController {
function __construct(UserForm $userForm)
{
$this->userForm = $userForm;
}
答案 0 :(得分:0)
我不是Laravel的人,但快速检查他们的文档表明Resource Controllers支持PUT以及其他HTTP动词。
我无法弄清楚如何为任意操作添加HTTP动词支持,但this表示您可以命名一个控制器操作,前缀为它响应的动词
public function putUpdate($id)