Laravel change input value

后端 未结 6 1593
灰色年华
灰色年华 2020-12-01 05:45

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\";

相关标签:
6条回答
  • 2020-12-01 06:24

    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

    0 讨论(0)
  • 2020-12-01 06:31

    Try this,it will help you.

    $request->merge(array('someIndex' => "yourValueHere"));
    
    0 讨论(0)
  • 2020-12-01 06:32

    If you mean you want to overwrite input data, you can try doing:

    Input::merge(array('somedata' => 'SomeNewData'));
    
    0 讨论(0)
  • 2020-12-01 06:33

    I also found this problem, I can solve it with the following code:

    public function(Request $request)
    {
        $request['inputname'] = 'newValue';
    }
    

    Regards

    0 讨论(0)
  • 2020-12-01 06:35

    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.
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-01 06:35

    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]);
        }
    
    0 讨论(0)
提交回复
热议问题