-
-
Save nasirkhan/809eee36875dc7c1935bc4289be214c6 to your computer and use it in GitHub Desktop.
<?php | |
php artisan tinker | |
$controller = app()->make('App\Http\Controllers\MyController'); | |
app()->call([$controller, 'myMethodName'], []); | |
//the last [] in the app()->call() can hold arguments such as [user_id] => 10 etc' |
Hello, this approach is great, but how to pass request parameters?
I created Request object by this:
$request = Request::create('/controller/action', 'POST', $params);
Its helpful app()->call('App\Http\Controllers\MyController@myMethodName');
Thanks
how about if Im passing in a request? it wont accept it.
Hello, this approach is great, but how to pass request parameters?
I created Request object by this:
$request = Request::create('/controller/action', 'POST', $params);
I have searched long time in SO.
However I still dont know how to pass a customed Request object to app()->call()
function.
Need help.
params
I do not try this, but I think it may work.
We must specify the controller method with injected Request $request
, so we can generate a customed Request object, and then
$response = app(IndexController:class)->{'index'}($request)
Thus the $request object can pass to controller method.
The point, you cannot use request()
helper function in your controller, It will create new Request, and cannot handler your input.
That's it.
I will try that approach, thanks.
how about if Im passing in a request? it wont accept it.
$request = Illuminate\Http\Request(['params' => 'value', 'another_params' => 'another value']);
$controller = app()->make('App\Http\Controllers\SomeController');
app()->call([$controller, 'someMethod'], ['request' => $request]);
how about if Im passing in a request? it wont accept it.
$request = Illuminate\Http\Request(['params' => 'value', 'another_params' => 'another value']); $controller = app()->make('App\Http\Controllers\SomeController'); app()->call([$controller, 'someMethod'], ['request' => $request]);
👍
I am using this way to add request parameters and call controller.
- add parameters
app()
->make('Illuminate\Http\Request')
->merge([
'search' => 'hello',
]);
- call controller
$controller = app()->make('App\Http\Controllers\SearchController');
app()->call([$controller, 'index']);
-- Class
class SearchController
{
public function index(Request $request)
{
return $request->all();
// returns ['search' => 'hello']
}
}
What about this?
$request = (new \Illuminate\Http\Request)->replace(['foo' => 'bar'])
$response = (new App\Http\Controller\SearchController)->foo($request);
thank you !!
very helpfull for me.