在 laravel 中动态创建 blade
Dynamically creating a blade in laravel
我正在做这个项目,我想让管理员用户为网站创建自定义页面。
是否可以不在数据库中保存用户请求,而是在我的 createpage.blade.php 中有一个按钮,当用户按下它时,它会在 views 文件夹中为我创建一个 blade用户要求?
P.S:我也希望它在 web.php 中创建一条路线,但这并不重要
因此,根据您的需要,您可以使用 summernote 或任何所见即所得的编辑器编写 HTML/CSS/JS 纯代码并将其存储在数据库中,然后使用一个 blade 文件加载内容并呈现它在 blade
上使用此语法
{!! !!}
但如果是用户生成的内容,则必须阅读此警告
Be very careful when echoing content that is supplied by users of your application. You should typically use the escaped, double curly brace syntax to prevent XSS attacks when displaying user supplied data.
更新:
您可以使用第三方包来保护您的代码
https://github.com/mewebstudio/Purifier
在此处进一步阅读 https://laravel.com/docs/8.x/blade#displaying-unescaped-data
是的,您可以使用 Storage::put()
方法在 Laravel 中动态创建页面。试试这个代码:
$pageContent = "@extends('layouts.app')
@section('title', '".\Request::input('page_name')."')
@section('page-header')
<h1>
'".\Request::input('page_name')."'
</h1>
@endsection
@section('content')
<div class='container'>
'".\Request::input('page_content')."'
</div>
@endsection
@section('script')
<script>
</script>
@endsection
@section('style')
<style>
</style>
@endsection
";
$project_name = 'your_project_name';
\Storage::disk('disk_path')->put($project_name.'/resources/views/new-page.blade.php', $pageContent);
并将此磁盘添加到您的 filesystem.php 磁盘下:
'disk_path' => [
'driver' => 'local',
'root' => 'E:\xampp\htdocs',
'visibility' => 'public',
],
并使用 fopen()
在 web.php
中写入路由
我正在做这个项目,我想让管理员用户为网站创建自定义页面。
是否可以不在数据库中保存用户请求,而是在我的 createpage.blade.php 中有一个按钮,当用户按下它时,它会在 views 文件夹中为我创建一个 blade用户要求?
P.S:我也希望它在 web.php 中创建一条路线,但这并不重要
因此,根据您的需要,您可以使用 summernote 或任何所见即所得的编辑器编写 HTML/CSS/JS 纯代码并将其存储在数据库中,然后使用一个 blade 文件加载内容并呈现它在 blade
上使用此语法{!! !!}
但如果是用户生成的内容,则必须阅读此警告
Be very careful when echoing content that is supplied by users of your application. You should typically use the escaped, double curly brace syntax to prevent XSS attacks when displaying user supplied data.
更新: 您可以使用第三方包来保护您的代码 https://github.com/mewebstudio/Purifier
在此处进一步阅读 https://laravel.com/docs/8.x/blade#displaying-unescaped-data
是的,您可以使用 Storage::put()
方法在 Laravel 中动态创建页面。试试这个代码:
$pageContent = "@extends('layouts.app')
@section('title', '".\Request::input('page_name')."')
@section('page-header')
<h1>
'".\Request::input('page_name')."'
</h1>
@endsection
@section('content')
<div class='container'>
'".\Request::input('page_content')."'
</div>
@endsection
@section('script')
<script>
</script>
@endsection
@section('style')
<style>
</style>
@endsection
";
$project_name = 'your_project_name';
\Storage::disk('disk_path')->put($project_name.'/resources/views/new-page.blade.php', $pageContent);
并将此磁盘添加到您的 filesystem.php 磁盘下:
'disk_path' => [
'driver' => 'local',
'root' => 'E:\xampp\htdocs',
'visibility' => 'public',
],
并使用 fopen()
在 web.php