我想知道是否有一种方法可以列出响应中加载/包含/扩展的所有视图?
我知道laravel-debugbar,但我想在我的代码中进行单元测试。
只是为了澄清:我不想列出资源文件夹中的所有视图。我想获得当前响应/请求中使用的所有视图的列表。
谢谢!
答案 0 :(得分:0)
我为自己做了类似的事情。这不完美。使用函数创建以下路由:
Route::get('list-views', function(){
$full_path = 'FULL-PATH-TO-YOUR-LARAVEL-VIEWS-FOLDER'; //LIKE /home/account/www/resources/views/
if(!is_dir($full_path))
return 'Views directory not found';
$files = scandir($full_path);
unset($files[0]);
unset($files[1]);
if(($key = array_search('emails', $files)) !== false) {
unset($files[$key]);
}
foreach($files AS $file){
$link = str_replace('.blade.php','',$file);
echo '<a href="'.$link.'">'.$link.'</a>'.'<br>';
}
});
此函数的作用是检查是否存在您在变量$ full_path中定义的视图路径,扫描该目录以查看视图文件。现在,list-views
将列出所有可用的视图。
答案 1 :(得分:0)
laravel debugbar这样做,但在我的情况下,我无法找到一种方法在同一个网址中列出所有视图,所以如果有人知道我会如何深深地欣赏它。
// EventServiceProvider@boot()
use Illuminate\Foundation\Http\Events\RequestHandled;
app('events')->listen(RequestHandled::class, function ($event) {
$request = $event->request;
$response = $event->response;
$check = !$request->ajax() &&
!$request->pjax() &&
$request->isMethodCacheable() &&
$response->isSuccessful();
if ($check) {
$view = $response->original;
$path = ltrim(str_replace(base_path(), '', realpath($view->getPath())), '/');
logger([$request->url(), $path]);
}
});
可能是另一种方式,但这只会显示主视图“而不是嵌套或父级”
public function handle($request, Closure $next)
{
$response = $next($request);
$check = !$request->ajax() &&
!$request->pjax() &&
$request->isMethodCacheable() &&
$response->isSuccessful();
if ($check) {
$view = $response->original;
$path = ltrim(str_replace(base_path(), '', realpath($view->getPath())), '/');
logger([$request->url(), $path]);
}
return $response;
}
您也可以从中间件获取视图,但这只会显示与b4相同的主视图
function draw(){
var delay = 200;//Your delay in milliseconds
setTimeout(function(){
/*code */
alert(pipeNorth.height);
requestAnimationFrame(draw);
},delay);
}