Reputation: 155
I created 2 classes called UserStoreRequest
and UserAuthController
in my laravel project. UserStoreRequest
is a FormRequest to Validate the Request coming from the user. Once I send parameters, I just want to access these inside the Register
method, but I get an empty array as response, instead of parameters sent.
UserAuthController
:namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\UserStoreRequest;
use App\Models\User;
class UserAuthController extends Controller
{
public function register(UserStoreRequest $request)
{
dd($request->all());
/* $data = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|confirmed'
]);
$data['password'] = bcrypt($request->password);
$user = User::create($data);
$token = $user->createToken('API Token')->accessToken;
return response(['user' => $user, 'token' => $token]);*/
}
}
UserStoreRequest
:namespace App\Http\Requests;
use Illuminate\Http\Request;
class UserStoreRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
Below I put the route used in the API class to send parameters:
Route::post('/register', 'App\Http\Controllers\Auth\UserAuthController@register');
Upvotes: 0
Views: 703
Reputation: 13447
It looks like you're trying to use a Form Request. To do so, make sure you extend the proper parent class.
// Incorrect
use Illuminate\Http\Request;
class UserStoreRequest extends Request { /* ... */ }
// Correct
use Illuminate\Foundation\Http\FormRequest;
class UserStoreRequest extends FormRequest { /* ... */ }
The Laravel dependency injection container is able to instantiate a new instance of your existing Request, which is why you don't receive any errors and an instance of your request is available to the controller. However, Laravel doesn't know to populate it with the actual request data. That's where FormRequest
comes in.
Upvotes: 2