Laravel更改输入值

use*_*781 52 php input laravel-4

在laravel中,我们可以通过获取输入值Input::get('inputname').我尝试通过这样做来改变价值Input::get('inputname') = "new value";.但后来,我得到的错误信息说Can't use function return value in write context.

我们是否可以更改输入值,以便以后调用时Input::get('inputname')将获得新修改的值?

谢谢.

Bra*_*rad 126

您可以使用Input::merge()来代替单品.

Input::merge(['inputname' => 'new value']);
Run Code Online (Sandbox Code Playgroud)

或者Input::replace()用来替换整个输入数组.

Input::replace(['inputname' => 'new value']);
Run Code Online (Sandbox Code Playgroud)

这里有一个到文档的链接

  • _Note_:`Input ::`只是`app('request')`的一个外观.所以`$ request-> merge, - > replace` ...也可以.谢谢. (20认同)
  • 对于`FormRequest`,也可能需要用`$ request-> request-> replace(array_merge($ request-> request-> all(),$ newData)替换内部`$ request-> request`(`ParameterBag`的实例) ));` (3认同)

Sud*_*oti 10

如果你的意思是你想覆盖的输入数据,你可以尝试做:

Input::merge(array('somedata' => 'SomeNewData'));
Run Code Online (Sandbox Code Playgroud)

  • 除了它将是:`Input :: merge(array('somedata'=>'SomeNewData'));` (2认同)

Arm*_*n H 10

如果您希望在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.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Rah*_*ham 5

试试这个,它会对你有所帮助.

$request->merge(array('someIndex' => "yourValueHere"));
Run Code Online (Sandbox Code Playgroud)