【问题标题】:Seeking help in getting Form Validation working in Laravel 5.2寻求帮助以使表单验证在 Laravel 5.2 中工作
【发布时间】:2016-03-15 14:07:33
【问题描述】:

我正在尝试有关在 Bitnami WAMP 上安装新的 Laravel 5.2 进行验证的建议,但没有运气。我已经尝试了Laravel 5.2 $errors not appearing in Blade 以及其他地方给出的这两个建议,其中甚至还没有开始使用验证的页面返回了以下错误。

当我尝试将我的工作路线 (app/http/routes.php) 放在 Route::group(['middleware' => ['web']] 上时,函数 () {... 等如下:

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

我收到以下错误消息:

+ RuntimeException in Request.php line 852: Session store not set on request.
+ in Request.php line 852 at Request->session() 
+ in ShareErrorsFromSession.php line 42
+ at ShareErrorsFromSession->handle(object(Request), object(Closure))
+ at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
+ at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
+ at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
+ at CheckForMaintenanceMode->handle(object(Request), object(Closure))
+ at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
+ at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
+ at Pipeline->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
+ at Pipeline->then(object(Closure)) in Kernel.php line 132
+ at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
+ at Kernel->handle(object(Request)) in index.php line 54

当我尝试将受保护的 $middlewareGroups 网络 (app/Http/Kernel.php) 移动到受保护的 $middleware = [] 时,如下所示:

Route::group(['middleware' => 'web'], function() {
    Route::resource('country', 'Region\CountryController');
});

我收到错误消息:

+ RuntimeException in EncryptionServiceProvider.php line 31: No supported encrypter found. The cipher and / or key length are invalid.
+ in EncryptionServiceProvider.php line 31
+ at EncryptionServiceProvider->Illuminate\Encryption{closure}(object(Application), array()) in Container.php line 735
+ at Container->build(object(Closure), array()) in Container.php line 633 at Container->make('encrypter', array()) in Application.php line 674
+ at Application->make('Illuminate\Contracts\Encryption\Encrypter') in Container.php line 853
+ at Container->resolveClass(object(ReflectionParameter)) in Container.php line 808
+ at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 779
+ at Container->build('App\Http\Middleware\EncryptCookies', array()) in Container.php line 633
+ at Container->make('App\Http\Middleware\EncryptCookies', array()) in Application.php line 674
+ at Application->make('App\Http\Middleware\EncryptCookies') in Pipeline.php line 123
+ at Pipeline->Illuminate\Pipeline{closure}(object(Request))
+ at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
+ at Pipeline->Illuminate\Routing{closure}(object(Request))
+ at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
+ at Pipeline->then(object(Closure)) in Router.php line 726
+ at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
+ at Router->dispatchToRoute(object(Request)) in Router.php line 675
+ at Router->dispatch(object(Request)) in Kernel.php line 246
+ at Kernel->Illuminate\Foundation\Http{closure}(object(Request))
+ at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
+ at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
+ at CheckForMaintenanceMode->handle(object(Request), object(Closure))
+ at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
+ at Pipeline->Illuminate\Pipeline{closure}(object(Request))
+ at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
+ at Pipeline->Illuminate\Routing{closure}(object(Request))
+ at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
+ at Pipeline->then(object(Closure)) in Kernel.php line 132
+ at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
+ at Kernel->handle(object(Request)) in index.php line 54

这些错误出现在一个甚至还没有要求验证的页面上。

当我尝试在存储方法中更新后重定向到的刀片模板上获取 $errors 时,也没有定义 $errors。

欢迎任何帮助,因为我几天来一直在尝试在新的 Laravel 5.2 安装中解决这个问题。

谢谢

【问题讨论】:

  • 您是否在您的.env 文件中生成了一个随机的APP_KEY
  • 还没有。我现在就试试。
  • 亚历杭德罗谢谢你!!!!尽管更改 kernel.php 文件仍然给了我完全相同的结果,但在路由文件中使用中间件包装器的第二种方法确实有效。如果您有任何其他说明为什么生成随机 APP_KEY 会影响验证,我很想知道更多关于它为什么起作用的信息。无论如何,再次感谢您!!!

标签: validation laravel configuration wamp laravel-5.2


【解决方案1】:

(作为正式答案在这里发布)

您提到的第二种方式更方便,在您的路由定义中应用中间件(或中间件组,如 web 是)。

web 组包括与会话和加密相关的中间件。 Laravel 使用APP_KEY 的值来加密所有会话数据,表单输入和验证错误都存储在会话中。

在会话访问期间的某个时刻,Laravel 尝试创建 en Encrypter 对象,如果应用程序密钥不是 32 个字符长,则该对象会失败。我刚刚发现阅读源代码,但是您只需要知道,当您对应用程序进行初始配置时,您的.env文件应该有一个32长的随机字符串APP_KEY。 Artisan 命令key:generate 会为您执行此操作。

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 2016-05-23
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2016-08-28
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多