我正在使用Laravel 8并且已经安装InertiaJS,但是在我的目录中resources/views/我有一个名为的文件index.blade.php,我计划与InertiaJS.
默认情况下,InertiaJS在该目录中查找名为app.blade.php. 我知道写以下语句:
\Inertia\Inertia::setRootView('index');
更改rootView并允许我使用我创建的文件。这似乎是一个愚蠢的问题,但据我所知,我可以做两件事..
index.blade.php为app.blade.phpServiceProviders我所拥有的其中一个中我想知道以下几点:
InertiaJS-Laravel不允许ServiceProvider使用命令发布php artisan vendor:publish?(此命令的输出没有显示关于此包的任何要发布的内容)ServiceProviderlike:php artisan make:provider InertiaServiceProvider然后注册它?ServiceProvider已经存在的语句之一?像app/Http/Providers/RouteServiceProvider.php你有什么建议会更好?
我想在我的项目中寻找最大的组织。非常感谢您提前...
小智 8
更严格的是,只需像这样覆盖该rootView方法App\Http\Middleware\HandleInertiaRequests......
public function rootView(Request $request)
{
if ($request->route()->getPrefix() == 'admin') {
return 'layout.admin';
}
return parent::rootView($request);
}
Run Code Online (Sandbox Code Playgroud)
您可以在控制器内即时执行此操作。
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Inertia\Inertia;
class NewsController extends Controller
{
public function index()
{
Inertia::setRootView('layouts.news');
$users = User::all();
return Inertia::render('News/Index', compact('users'));
}
}
Run Code Online (Sandbox Code Playgroud)
更新; 在我最初的回答(在 20-09-2020 上)之后,Inertia引入了中间件来处理您的 Inertia 请求。
如以下答案所述,您可以使用该命令php artisan inertia:middleware生成此中间件。您可以使用以下方法设置根索引:
// Set root template via property
protected $rootView = 'app';
// OR
// Set root template via method
public function rootView(Request $request)
{
return 'app';
}
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到更多信息。
小智 5
替换在App\Http\Middleware\HandleInertiaRequests
protected $rootView = 'app';
Run Code Online (Sandbox Code Playgroud)
和:
public function rootView(Request $request): string
{
if ($request->route()->getPrefix() === '/admin') {
return 'admin.app';
}
return 'app';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |