在laravel中上传文件的问题

时间:2014-03-22 12:29:15

标签: php symfony laravel laravel-4

我尝试使用laravel上传文件但是在提交表单时会出现以下错误

异常

序列化' Symfony \ Component \ HttpFoundation \ File \ UploadedFile'不允许

这是我的刀片:

    {{ Form::open(array('route' => 'drivers.store', 'files' => true, 'class' => 'form-horizontal')) }}
    <form role="form">
        <div class="form-group first-field">
            {{ Form::label('first_name', 'First Name:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4 ">
                {{ Form::text('first_name', $value = null, array('placeholder' => 'ex-Jon', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>           
        </div>
        <span class='error-text'> {{ $errors->first('first_name') }} </span>

        <div class="form-group">
            {{ Form::label('last_name', 'Last Name:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('last_name', $value = null, array('placeholder' => 'ex-Doe', 'required' => 'required', 'class' => 'form-control', 'class' => 'form-control')) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('last_name') }} </span>

        <div class="form-group">
            {{ Form::label('email', 'Email:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('email', $value = null, array('placeholder' => 'ex-test@example.com', 'rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('email') }} </span>

        <div class="form-group">
            {{ Form::label('contact_number', 'Phone:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('contact_number', $value = null, array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('contact_number') }} </span>

        <div class="form-group">
            {{ Form::label('sin', 'SIN:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('sin', $value = null, array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('sin') }} </span>

        <div class="form-group">
            {{ Form::label('license_number', 'License Number:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('license_number', $value = null, array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('license_number') }} </span>

        <div class="form-group">
            {{ Form::label('license_file', 'License File:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::file('license_file') }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('license_file') }} </span>

        <div class="form-group">
            {{ Form::label('street_address', 'Street Address:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::text('street_address', $value = null, array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-symbol">* </span>
        </div>
        <span class='error-text'> {{ $errors->first('street_address') }} </span>

        <div class="form-group">
            {{ Form::label('password', 'Password:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::password('password',array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
            <span class="required-text">Between 6 and 12 Characters</span>
        </div>
        <span class='error-text'> {{ $errors->first('password') }} </span>

        <div class="form-group">
            {{ Form::label('password_confirmation', 'Confirm Password:', array('class' => 'col-sm-3 control-label')) }}
            <div class="col-xs-4">
                {{ Form::password('password_confirmation', array('rows' => '3', 'required' => 'required', 'autofocus' => 'autofocus', 'class' => 'form-control' )) }}
            </div>
        </div>

        <div class="form-group">
            {{ Form::submit('Add Driver', array('class' => 'btn btn-primary center-block sh-request-button sign-up')) }}
        </div>
    </form>
{{ Form::close() }}

//控制器:

public function store()
    {

        $input = \Input::all();

        ////echo "</pre>";print_r($input); $file= \Input::file('license_file.name');

        $validator = $this->_modelDriver->validator($input);

        if ($validator->fails()) {

            return \Redirect::route('drivers.create')->withInput($input)->withErrors($validator);
        }

        else {
            echo "test success";exit;
        }

    }

//验证器:

public function validator(array $input, $isUpdate=false)
    {
        if(!$isUpdate) {
            $rules = array(
                    'first_name'=>'required|alpha|min:2',
                    'last_name'=>'required|alpha|min:2',
                    'email'=>'required|email|unique:drivers',
                    'password'=>'required|between:6,12|confirmed',
                    'password_confirmation'=>'required|between:6,12'

            );
        } else {
            $rules = array(
                    'firstname'=>'required|alpha|min:2',
                    'lastname'=>'required|alpha|min:2',
                    'email'=>'required|email',
            );
        }

        return Validator::make($input, $rules);

    }

我是laravel的新手。所以如果有人能说出我做错了什么以及如何解决这个问题。

由于

1 个答案:

答案 0 :(得分:12)

这种情况正在发生,因为您尝试使用文件输入返回。

你应该写这个

$input = \Input::except('license_file');
return \Redirect::route('drivers.create')->withInput($input)->withErrors($validator);

而不仅仅是

   return \Redirect::route('drivers.create')->withInput($input)->withErrors($validator);