【问题标题】:How to check when a form was rendered in Laravel如何检查表单何时在 Laravel 中呈现
【发布时间】:2017-10-25 05:27:03
【问题描述】:

在提交表单后,我希望确定向用户呈现 Laravel 表单(使用 Laravel Collective HTML 包构建)的时间。

出于各种原因,我需要在提交时检查此日期。

我有一个大型现有项目,正在考虑获得此日期的最佳方式。我正在阅读 CSRF 中间件(因为此令牌已包含在所有表单中)以查看是否可以从中提取它,也许在另一个中间件中添加类似 form_generated_date 到请求中。

如果可能的话,这看起来有点牵强。所以现在我正在考虑为每个表单添加一个自定义字段。

我希望它包含在所有表单中,就像 Form::open() 方法将添加 CSRF 令牌一样。我找到了有关添加自己的宏的信息,但没有找到有关扩展此方法的信息。

有谁知道是否可以从 CSRF 令牌中获取日期?或者如何(或文档在哪里)扩展Form::open() 方法。

【问题讨论】:

    标签: forms laravel-5 laravelcollective


    【解决方案1】:

    Form::open() 方法看起来在 FormBuilder.php 文件 (https://github.com/LaravelCollective/html/blob/2f6dc39ab3655724a615fe8a652d8b7f04fc9ac6/src/FormBuilder.php) 中。

    这个文件可以在/vendor/laravelcollective/html/src/FormBuilder.php找到

    您应该能够向 open 方法添加一个新的隐藏表单字段,记住这将在任何更新中被覆盖。不是很推荐,但会达到你想要的。

    【讨论】:

    • 感谢您的想法,但编辑供应商包不适合我:) 我正在考虑将 FormBuilder 扩展到 CustomFormBuilder 以覆盖该方法。但是希望表单构建器为此目的故意公开一种方法,例如使用宏。不过,我需要确保在应用程序的所有部分中都将依赖项正确解析为我的新 CustomFormBuilder 类。到时候我会在这里发布一些代码
    • 我同意 :) 由于似乎没有办法从令牌生成中获取日期/时间,我认为确保每次打开表单时都添加一个隐藏字段是一种方式去。只需确保您对其进行了特定的测试即可。
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多