wuwx/laravel-plus-view is a Laravel package.
It currently has 3 GitHub stars and 347 downloads on Packagist (latest version v9.3.0).
Install it with composer require wuwx/laravel-plus-view.
Discover more Laravel packages by wuwx
or browse all Laravel packages to compare alternatives.
Last updated
一个 Laravel 扩展包,让你的应用能够根据请求格式自动选择对应的视图模板,轻松实现多格式响应(HTML、JSON、XML、JS 等)。
_format 查询参数或 Accept 请求头自动选择视图模板Content-Type 响应头该扩展通过中间件拦截请求,根据格式参数动态注册视图扩展名,使 Laravel 能够自动查找对应格式的视图文件。
例如,当请求 ?_format=json 时,Laravel 会优先查找 view.json.blade.php 或 view.json.php 文件。
通过 Composer 安装:
composer require wuwx/laravel-plus-view
扩展包会通过 Package Discovery 自动注册,无需手动配置。
需要在 config/app.php 中手动注册服务提供者:
'providers' => [
// ...
Wuwx\LaravelPlusView\LaravelPlusViewServiceProvider::class,
],
在 resources/views 目录下创建不同格式的视图文件:
resources/views/users/index.html.blade.php
<!DOCTYPE html>
<html>
<head>
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<ul>
@foreach($users as $user)
<li>{{ $user->name }}</li>
@endforeach
</ul>
</body>
</html>
resources/views/users/index.json.blade.php
{!! json_encode($users) !!}
resources/views/users/index.xml.blade.php
<?xml version="1.0" encoding="UTF-8"?>
<users>
@foreach($users as $user)
<user>
<id>{{ $user->id }}</id>
<name>{{ $user->name }}</name>
</user>
@endforeach
</users>
resources/views/users/index.js.blade.php
var users = {!! json_encode($users) !!};
console.log(users);
控制器代码保持不变,只需返回视图:
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
方式一:使用 _format 查询参数
# 返回 HTML 格式(默认)
curl http://localhost:8000/users
# 返回 JSON 格式
curl http://localhost:8000/users?_format=json
# 返回 XML 格式
curl http://localhost:8000/users?_format=xml
# 返回 JavaScript 格式
curl http://localhost:8000/users?_format=js
方式二:使用 Accept 请求头
# 返回 JSON 格式
curl http://localhost:8000/users -H "Accept: application/json"
# 返回 XML 格式
curl http://localhost:8000/users -H "Accept: application/xml"
# 返回 JavaScript 格式
curl http://localhost:8000/users -H "Accept: application/javascript"
扩展包支持所有 Laravel 内置的 MIME 类型,包括但不限于:
html - text/htmljson - application/jsonxml - application/xmljs - application/javascriptcss - text/csstxt - text/plaincsv - text/csv视图文件命名格式:{视图名称}.{格式}.{扩展名}
index.json.blade.phpindex.json.php运行测试套件:
composer test
或
vendor/bin/phpunit
MIT License. 详见 LICENSE 文件。