Laravel 5.2 Flash Old并在重定向

时间:2016-08-23 13:25:54

标签: validation laravel session input laravel-5.2

我在laravel有问题。这个问题只存在于生产服务器中,在我的本地服务器中它的工作属性。所以也许这是我不知道的配置中的东西。

因此,当我发送一个表单时,错误的值,laravel验证器系统应该将用户重定向到表单并显示错误。

这是我的控制器的代码:

$rules = array(
        'nombre'  => 'required|min:3|max:80',
        'email'   => 'required|email',
        'asunto'=>'required|min:3|max:200',
        'mensaje'=>'required|min:5|max:1000',
        //'g-recaptcha-response' => 'required|recaptcha',
    );

    $validation = Validator::make($request->all(), $rules);
         //si la validación falla redirigimos al formulario de registro con los errores
        //y con los campos que nos habia llenado el usuario    
    if ($validation->fails())
    {
        return Redirect::to('/#contacto')->withErrors($validation->messages())->withInput();
    }

/ #contacto是带有contacto的Home路由,所以这应该重定向到home。没关系。

这是我的route.php

    Route::get('/', function () {
    return view('web.index');
});

Route::post('/contacto/enviar', 'WebController@contacto');

这是我的内核

 protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],

];

这是我应该显示错误结果的视图。

<form name="contacto" method="post" action="/contacto/enviar"><input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
                <div class="col-lg-6 col-sm-5 wow fadeInUp delay-05s">
                    <div class="form"><font color="#ff0000" size="1"><b>{{$errors->first('nombre', ':message')}}</b></font><input class="input-text" type="text" name="nombre" value="<?=Request::old('nombre', 'Nombre y apellido *');?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"><font color="#ff0000" size="1"><b>{{$errors->first('email', ':message')}}</b></font><input class="input-text" type="text" name="email" value="<?=Request::old('email', 'Correo electrónico *');?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"><font color="#ff0000" size="1"><b>{{$errors->first('telefono', ':message')}}</b></font><br><input class="input-text" type="text" name="telefono" value="<?=Request::old('telefono', 'Teléfono (incluya código de área) *');?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"><font color="#ff0000" size="1"><b>{{$errors->first('asunto', ':message')}}</b></font><input class="input-text" type="text" name="asunto" value="<?=Request::old('asunto', 'Asunto');?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"><font color="#ff0000" size="1"><b>{{$errors->first('mensaje', ':message')}}</b></font><textarea class="input-text text-area" cols="0" rows="0" name="mensaje" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"><?=Request::old('mensaje', 'Escriba aquí el mensaje *');?></textarea><font color="#ff0000" size="1"><b>{{$errors->first('g-recaptcha-response', ':message')}}</b></font>{!! Recaptcha::render(['lang'=>'es']) !!}<input class="input-btn" type="submit" value="ENVIAR"></div>
                </div></form>

在我的视图的顶部,我有一个var_dump(Session :: all()),这是我提交表单时的结果。

  array(3) {
  ["_token"]=>
  string(40) "WrQWk9qTH47QrKD6J0Qld8sOhKcUp8xssGpy0F2g"
  ["_previous"]=>
  array(1) {
    ["url"]=>
    string(25) "http://dsnet.dsnet.com.ar"
  }
  ["flash"]=>
  array(2) {
    ["old"]=>
    array(0) {
    }
    ["new"]=>
    array(0) {
    }
  }

执行php artisan route:列出这是我的结果,所以我检查过web中间件不重复。 This is the print screen of route:list

异化的是我本地服务器中的相同代码正在运行,并且在所有形式重定向中,结果是:

array(4) {
  ["_token"]=>
  string(40) "4s1rhoydlH7l84Em792N79ymemNjh4Ep6I8WLNSG"
  ["errors"]=>
  object(Illuminate\Support\ViewErrorBag)#177 (1) {
    ["bags":protected]=>
    array(1) {
      ["default"]=>
      object(Illuminate\Support\MessageBag)#178 (2) {
        ["messages":protected]=>
        array(1) {
          ["email"]=>
          array(1) {
            [0]=>
            string(40) "The email must be a valid email address."
          }
        }
        ["format":protected]=>
        string(8) ":message"
      }
    }
  }
  ["flash"]=>
  array(2) {
    ["new"]=>
    array(0) {
    }
    ["old"]=>
    array(2) {
      [0]=>
      string(6) "errors"
      [1]=>
      string(10) "_old_input"
    }
  }
  ["_old_input"]=>
  array(7) {
    ["_token"]=>
    string(40) "jzCq4CGGgutPJ3qB2ls1rp7uaiHpcra9Aer1vApC"
    ["nombre"]=>
    string(19) "Nombre y apellido *"
    ["email"]=>
    string(21) "Correo electrónico *"
    ["telefono"]=>
    string(38) "Teléfono (incluya código de área) *"
    ["asunto"]=>
    string(6) "Asunto"
    ["mensaje"]=>
    string(26) "Escriba aquí el mensaje *"
    ["g-recaptcha-response"]=>
    string(0) ""
  }
}

我记得我在本地服务器上遇到了同样的问题,我修改了将会话配置文件中的域配置设置为null,但此解决方案在生产服务器中不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,我说代码很棒!代码没有问题,但服务器配置存在问题。我不知道在哪里。但是我将网站上传到另一台服务器并且使用domain = null的设置,会话配置工作很棒。