php 代码
public function store(Request $request) { $name = $request->get('namne', 0); $newname = $request->set('newname', 0); // 前端提交 `data` 里面没有 `newname` 这个字段, // 需要在这里处理一些业务逻辑,新增一个字段然后到下面一起保存起来 // $request->newname = 'newname' // 尝试过这样好像没写进入 //想在保存数据前,添加一个字段 ; // $request->all()->'新的字段名称' = '我是新加的字段值'; // 这个时候 $request->all() 会多出来上面新添加的字段 $post = Post::create($request->all()); }
vue 代码
this.$http.post('/backend/post', data).then(function(result) { })
大神 有木有,该如何在保存前 在 $request->all() 里面添加一个字段呢
常用的几个操作 input 的方法:
// 合并输入,如果有相同的key,用户输入的值会被替换掉,否则追加到 input
$request->merge(['foo' => 'bar', ....]);
// 替换所有输入
$request->replace([..])
// 设置某参数,如果存在则替换,否则新增
$request['foo'] = 'bar';
// 移除某参数
unset($request['foo'])
$request->all() // 这是一个数组吧,array_merge() 是你的需求么
$array = $request->all(); $array['test'] = 'test'; $post = Post::create($array);
用array_merge生成新数组,而不是在里面添加一个键值对,你不觉得这样更合理吗
$request->replace(array_merge($request->all(),[ 'key'=>'val'; ])); dd($request->all());
建议你看一下request的源码:
例如:(merge方法,将一个新值合并到request中)
/**
* Merge new input into the current request's input array.
*
* @param array $input
* @return void
*/
public function merge(array $input)
{
$this->getInputSource()->add($input);
}
所以我们可以使用:
$request->merge(['newKey' => 'newValue']);