Laravel изменить входное значение


В laravel мы можем получить входное значение через Input::get('inputname'). Я пытаюсь изменить значение, делая это Input::get('inputname') = "new value";. Но затем я получаю сообщение об ошибке, в котором говорится: Can't use function return value in write context.

Можем ли мы изменить входное значение так, чтобы при последующем вызове Input::get('inputname') получить новое измененное значение?

Спасибо.

Author: user1995781, 2014-04-15

5 answers

Вы можете использовать Input::merge() для замены отдельных элементов.

Input::merge(['inputname' => 'new value']);

Или используйте Input::replace() для замены всего входного массива.

Input::replace(['inputname' => 'new value']);

Вот ссылка на документацию

 113
Author: Brad, 2016-12-02 17:59:40

Если вы хотите сделать это в Laravel 5, вы можете использовать метод merge() из класса Request:

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.
        }
    }
}
 10
Author: Arman H, 2015-08-16 06:19:47

Если вы имеете в виду, что хотите перезаписать входные данные, вы можете попробовать сделать:

Input::merge(array('somedata' => 'SomeNewData'));
 9
Author: Sudhir Bastakoti, 2016-12-02 03:43:01

Попробуйте это, это поможет вам.

$request->merge(array('someIndex' => "yourValueHere"));
 2
Author: Raham, 2016-04-11 13:01:36

Я также нашел эту проблему, я могу решить ее с помощью следующего кода:

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

С уважением

 0
Author: anayarojo, 2018-09-24 23:29:56