我在使用请求参数调用store()或update()方法以在请求Eloquent函数之前向请求添加一些附加值的时候遇到了Laravel的情况,对此有什么解决方法。
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
我在使用请求参数调用store()或update()方法以在请求Eloquent函数之前向请求添加一些附加值的时候遇到了Laravel的情况,对此有什么解决方法。
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
array_add()
助手吗?$array = array_add($request->all(), 'new_key', $value);
:laravel.com/docs/5.2/helpers#method-array-add如果这不是您想要的那种东西,您能为您的问题提供更多信息吗?
Answers:
通常,您不希望向Request对象添加任何内容,最好使用collection和put()
helper:
function store(Request $request)
{
// some additional logic or checking
User::create(array_merge($request->all(), ['index' => 'value']));
}
或者你可以联合数组:
User::create($request->all() + ['index' => 'value']);
但是,如果您确实想向Request对象添加某些内容,请执行以下操作:
$request->request->add(['variable' => 'value']); //add request
参考Alexey Mezenin
答案:
在使用他的答案时,我必须直接向Request Object添加一些内容并使用:
$request->request->add(['variable', 'value']);
使用它添加了两个变量:
$request[0] = 'variable', $request[1] = 'value'
如果您是像我这样的新手,并且需要一个关联数组,那么正确的方法是
$request->request->add(['variable' => 'value']);
希望我节省了一些时间
PS:谢谢@Alexey
,您的回答确实帮助了我
Model
班级中声明数据库的值:protected $fillable = ['slug'];
我$request->merge($array)
在Laravel 5.2中尝试了功能,它运行良好。
例:
$request->merge(["key"=>"value"]);
在laravel 5.6中,我们可以在中间件之间传递参数,例如:
第一中间件
public function handle($request, Closure $next, ...$params)
{
//some code
return $next($request->merge(['key' => 'value']));
}
SecondMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
dd($request->all());
}
$request->merge()
方法FTW!谢谢。
要将ex:的新参数添加newParam
到当前Request
对象,您可以执行以下操作:
$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);
添加新参数后,您可以通过以下方式将此新添加的参数查看到Request对象中:
dd($request);//prints the contents of the Request object
根据我的观察:
$request->request->add(['variable' => 'value']);
(大多数)可以在POST,PUT和DELETE方法中工作,因为传递了值,其中之一是_token
。像下面的例子。
<form action="{{ route('process', $id) }}" method="POST">
@csrf
</form>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
但是[下面的代码]无法使用,因为没有传递任何值,它实际上并没有增加。
<a href='{{ route('process', $id) }}'>PROCESS</a>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
public function process($id){
$request = new Request(['id' => $id]);
}
或者您可以使用merge
。这实际上要好于$request->request->add(['variable' => 'value']);
因为可以初始化,并添加对所有方法(GET,POST,PUT,DELETE)都适用的请求值
public function process(Request $request, $id){
$request->merge(['id' => $id]);
}
标签: laravel5.8.11
我使用此代码向请求添加了一些内容。
$req->query->add(['key'=>'variable']);
$req->request->add(['key'=>'variable']);
我使用过的最好的方法是$ request-> merge([])(检查我的代码):
public function index(Request $request) {
not_permissions_redirect(have_premission(2));
$filters = (!empty($request->all())) ? true : false;
$request->merge(['type' => 'admin']);
$users = $this->service->getAllUsers($request->all());
$roles = $this->roles->getAllAdminRoles();
return view('users.list', compact(['users', 'roles', 'filters']));
}
检查索引函数中的第3行。
$request->all()
数组添加键值?