Laravel change input value
PhpInputLaravel 4Php Problem Overview
In laravel, we can get the input value via Input::get('inputname')
. I try to change the value by doing this Input::get('inputname') = "new value";
. But then, I get the error message saying Can't use function return value in write context
.
Is it possible for us change the input value so that when later calling on Input::get('inputname')
will get the new amended value?
Thanks.
Php Solutions
Solution 1 - Php
You can use Input::merge()
to replace single items.
Input::merge(['inputname' => 'new value']);
Or use Input::replace()
to replace the entire input array.
Input::replace(['inputname' => 'new value']);
Here's a link to the documentation
Solution 2 - Php
If you're looking to do this in Laravel 5, you can use the merge()
method from the Request
class:
class SomeController extends Controller
{
public function someAction( Request $request ) {
// Split a bunch of email addresses
// submitted from a textarea form input
// into an array, and replace the input email
// with this array, instead of the original string.
if ( !empty( $request->input( 'emails' ) ) ) {
$emails = $request->input( 'emails' );
$emails = preg_replace( '/\s+/m', ',', $emails );
$emails = explode( ',', $emails );
// THIS IS KEY!
// Replacing the old input string with
// with an array of emails.
$request->merge( array( 'emails' => $emails ) );
}
// Some default validation rules.
$rules = array();
// Create validator object.
$validator = Validator::make( $request->all(), $rules );
// Validation rules for each email in the array.
$validator->each( 'emails', ['required', 'email', 'min: 6', 'max: 254'] );
if ( $validator->fails() ) {
return back()->withErrors($validator)->withInput();
} else {
// Input validated successfully, proceed further.
}
}
}
Solution 3 - Php
If you mean you want to overwrite input data, you can try doing:
Input::merge(array('somedata' => 'SomeNewData'));
Solution 4 - Php
Try this,it will help you.
$request->merge(array('someIndex' => "yourValueHere"));
Solution 5 - Php
I also found this problem, I can solve it with the following code:
public function(Request $request)
{
$request['inputname'] = 'newValue';
}
Regards
Solution 6 - Php
I'm using Laravel 8. The following is working for me: $request->attributes->set('name', 'Value');
Solution 7 - Php
I used Raham's answer to solve my problem. However, it was nesting the updated data within an array, when I needed it at the same level as other data. I used:
$request->merge('someIndex' => "yourValueHere");
A note other Laravel newbies, I used the merge method to account for an empty checkbox value in a Laravel 7 update form. A deselected checkbox on an update form doesn't return 0, it doesn't set any value in the update request. As a result that value is unchanged in the database. You have to check for a set value and merge a new value if nothing exists. Hope that helps someone.
Just a quick update. If the user doesn't check a box and I need to enter a value in the DB I do something like this in my controller:
if(empty($request->input('checkbox_value'))) {
$request->merge(['checkbox_value' => 0]);
}