web-dev-qa-db-ja.com

Laravel入力値の変更

Laravelでは、Input::get('inputname')を介して入力値を取得できます。このInput::get('inputname') = "new value";を実行して値を変更しようとしています。しかし、その後、Can't use function return value in write contextというエラーメッセージが表示されます。

入力値を変更して、後でInput::get('inputname')を呼び出したときに新しい修正値を取得することは可能ですか?

ありがとう。

51
user1995781

Input::merge()を使用して、単一のアイテムを置き換えることができます。

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

または、Input::replace()を使用して、入力配列全体を置き換えます。

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

ドキュメントへのリンク

124
Brad

入力データを上書きする場合は、次のことを試してください。

Input::merge(array('somedata' => 'SomeNewData'));
10

Laravel 5でこれを実行したい場合は、Requestクラスのmerge()メソッドを使用できます。

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
Arman H

これを試してください、それはあなたを助けます。

$request->merge(array('someIndex' => "yourValueHere"));
4
Raham

私もこの問題を見つけました。次のコードで解決できます。

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

よろしく

1
anayarojo