在laravel中,我们可以通过Input::get('inputname')
获取输入值。我尝试通过执行此Input::get('inputname') = "new value";
来更改值。但是,我收到错误消息Can't use function return value in write context
。
我们是否可以更改输入值,以便以后调用Input::get('inputname')
时可以获得新修改的值?
感谢。
答案 0 :(得分:121)
您可以使用Input::merge()
替换单个项目。
Input::merge(['inputname' => 'new value']);
或使用Input::replace()
替换整个输入数组。
Input::replace(['inputname' => 'new value']);
答案 1 :(得分:10)
如果您希望在Laravel 5中执行此操作,可以使用class Assignment: NSObject, NSCoding {
var title = ""
var notes = ""
func encodeWithCoder(aCoder: NSCoder) {
// Methods
aCoder.encodeObject(title, forKey: "Title")
aCoder.encodeObject(notes, forKey: "notepad")
}
required init(coder aDecoder: NSCoder) {
// Methods
title = aDecoder.decodeObjectForKey("Title") as! String
notes = aDecoder.decodeObjectForKey("notepad") as! String
super.init()
}
override init() {
super.init()
}
}
类中的merge()
方法:
Request
答案 2 :(得分:9)
如果您的意思是要覆盖输入数据,可以尝试执行以下操作:
Input::merge(array('somedata' => 'SomeNewData'));
答案 3 :(得分:5)
试试这个,它会对你有帮助。
$request->merge(array('someIndex' => "yourValueHere"));
答案 4 :(得分:1)
我也发现了这个问题,可以通过以下代码解决:
public function(Request $request)
{
$request['inputname'] = 'newValue';
}
致谢
答案 5 :(得分:0)
我用拉罕的答案来解决我的问题。但是,当我需要与其他数据处于同一级别时,它会将更新的数据嵌套在数组中。我用过:
$request->merge('someIndex' => "yourValueHere");
请注意其他Laravel新手,我使用merge方法在Laravel 7更新表单中考虑了空复选框值。在更新表单上取消选中的复选框不会返回0,它不会在更新请求中设置任何值。结果,该值在数据库中保持不变。如果不存在,则必须检查设置值并合并新值。希望能对某人有所帮助。
只需快速更新。如果用户未选中某个框,而我需要在数据库中输入一个值,则可以在控制器中执行以下操作:
if(empty($request->input('checkbox_value'))) {
$request->merge(['checkbox_value' => 0]);
}