【问题标题】:Is this a good approach for building a templating/layouts system in laravel? Would it better to save data to a database?这是在 laravel 中构建模板/布局系统的好方法吗?将数据保存到数据库会更好吗?
【发布时间】:2019-01-12 17:43:12
【问题描述】:

我正在构建一个 Laravel PHP 应用程序,用户可以在其中为页面创建“布局”。

要进行布局,用户可以在表单中输入 HTML,并且可以选择指定区域,在创建使用此布局的页面时,所见即所得编辑器将允许编辑器添加内容。

现在发生的情况是,此 HTML 以 .blade.php 文件的形式保存在 /storage/templates/layouts 中。用户使用刀片的@yield 指令指定可编辑区域。每个可编辑区域都用 @section 指令包裹,并连接到单个 .blade.php 文件中,并添加 @extends() 指令,引用布局。然后保存在/storage/templates/pages。当请求页面时,它只是将视图作为普通刀片视图返回 return view('templates.pages.{page_slug}');

就性能、安全性和可维护性而言,这是一个好方法吗?将这些数据存储在数据库中会更好吗?有什么改进建议吗?

【问题讨论】:

    标签: php database laravel templates templating


    【解决方案1】:

    我认为这不利于安全目的。如果我理解正确,用户可以输入刀片代码吗?还是存储在刀片文件中的 html 代码?如果是这样,他们可以在您的服务器上执行 PHP 代码。例如,如果我要写在我的 html 文件中:

    @php(\App\User::first()->some_data)
    

    我可以获取所有用户数据,删除所有文件,基本上可以控制一切。我可能只会将 HTML 存储在普通文件或数据库中,并使用:{!! $userPage->htmlCode !!} 或其他内容加载它们。所以他们可以输入 html 代码,但不能输入 PHP / Blade 代码。

    如果您有任何问题,请随时发表评论!

    【讨论】:

    • 感谢您的回复。我将考虑将其存储在数据库中,而不是使用刀片进行处理。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 2020-11-07
    • 2012-08-13
    • 2010-09-05
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多