gpt4 book ai didi

laravel - 在 Laravel View 中使用命名空间

转载 作者:行者123 更新时间:2023-12-04 16:57:42 25 4
gpt4 key购买 nike

如何在 Laravel View 中使用命名空间?我的意思是我有三个不同的文件夹 admin , frontendclientapp/views文件夹。
如果我想加载部分模板,可以从 admin 说科views/admin/partials/flush.blade.phpviews/admin/account/profile.blade.php我必须包括它:

@include('admin/partials/flush')

相反,我只想使用
@include('partials/flush')

我怎样才能做到这一点?

最佳答案

您可以 extend blade并编写一个适合您需要的函数。像这样:

Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('includeNamespaced');

$viewPath = realpath($compiler->getPath());
$parts = explode(DIRECTORY_SEPARATOR, $viewPath);
$viewsDirectoryIndex = array_search('views', $parts);
$namespace = $parts[$viewsDirectoryIndex + 1];

$php = '$1<?php ';
$php .= 'if($__env->exists(\''.$namespace.'.\'.$2)){';
$php .= 'echo $__env->make(\''.$namespace.'.\'.$2)->render();';
$php .= '}';
$php .= 'else {';
$php .= 'echo $__env->make($2)->render();';
$php .= '}';
$php .= '?>';

return preg_replace($pattern, $php, $view);
});

然后像你描述的那样使用它,但使用 includeNamespaced
@includeNamespaced('partials/flush')

如果你愿意,你也可以覆盖 @include通过命名 createMatcher('include')
备注 “你的” @includeNamespaced/ @include将无法选择将参数传递给您包含的 View (第二个参数)

小贴士:当你更改里面的代码时 Blade::extend您必须删除 storage/views 中的缓存 View 以便更改显示在您的浏览器中。

关于laravel - 在 Laravel View 中使用命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com