【发布时间】:2021-06-15 04:25:18
【问题描述】:
所以我正在使用 Inertia 和 Vue 开发 Laravel 8 应用程序。
想法是大部分页面都是 Laravel + Blade (有利于 SEO、快速加载等...),但是对于需要大量用户交互的选定页面,我在 Blade 模板中插入了一个 Vue 组件,其中互动需要发生。
使用 Inertia,这是通过在 Laravel 路由调用的 Controller 中使用 return Inertia::render('vueComponent') 调用 Vue 组件来完成的。数据可以传递给 Vue 实例,甚至可以传递给 Blade 模板,所以这很好(见下文)。
namespace App\Http\Controllers;
use Inertia\Inertia;
class RangePageController extends Controller
{
public function show(string $lang='fr')
{
// Strip the trailing slash from $lang
$lang = Str::before($lang, '/');
return Inertia::render('ProductsGallery', ['bar' => "Hello World"])->withViewData(['lang' => $lang]);
}
}
默认情况下,文件“/resources/views/app.blade.php”是用Vue组件渲染的,替换了@inertia指令(加上一些Vue数据)。整洁。
默认情况下,使用刀片布局文件“app.blade.php”。文档指定可以更改默认值:Inertia\Inertia::setRootView('name');。
问题:除了更改默认值,有没有办法在从Controller调用不同页面时选择不同的Blade布局文件(并像上面一样注入Vue组件)?例如,我想为我的电子商务购物篮使用一种 Blade 布局,而为我的管理页面使用另一种布局。就像为一个页面选择“app1.blade.php”,为另一个页面选择“app2.blade.php”。
非常感谢! E.
【问题讨论】:
标签: laravel vue.js laravel-blade inertiajs