Laravel:在路由与控制器上调用视图

Posted

技术标签:

【中文标题】Laravel:在路由与控制器上调用视图【英文标题】:Laravel: calling the View on the Routes vs Controller 【发布时间】:2021-11-22 08:33:13 【问题描述】: 我想知道使用Routes和使用Routes有什么区别 控制器? Laravel 的系统有没有很大的不同,或者是 只是逻辑问题? 在 Routes 上调用 View 和在 在控制器上查看? Controller会自动缓存View而Routes不会?因为我在某处读到,如果我们在Controller中调用View,它会被缓存,但是如果我们在Routes中调用View,它是不是,所以我们必须在路由中手动缓存视图。 这是真的吗?

【问题讨论】:

【参考方案1】:

我想知道使用Routes和Controller有什么区别? Laravel 的系统有很大的不同,还是只是逻辑问题?

Routes 是您声明应用程序 url 的地方,Controller 包含表示应用程序逻辑的代码。

你可以把代码放在路由声明的回调参数中

Route::get('/user', function () 
    $user = User::where('active', '=', 1)
        ->where('parent_user_id', '=', Auth::id())
        ->paginate(10);
    return view('users', ['users' => $user]);
);

但它会很快变得混乱,所以最好声明一个与控制器类相关的路由

Route::get('/user', [UserController::class, 'index']);

在Routes上调用View和在Controller上调用View有区别吗?Controller会自动缓存View而Routes不会吗?因为我在某处读到,如果我们在Controller中调用View,会是缓存,但是如果我们在路由中调用视图,则不是这样,我们必须在路由中手动缓存视图。这是真的吗?

没有区别,除非与第三方缓存包相关,否则两者都不缓存。

【讨论】:

【参考方案2】:

Controller 是否会自动缓存 View 而 Routes 不会?因为我在某处读到,如果我们在 Controller 中调用 View,它将被缓存,但如果我们在 Routes 中调用 View,则不是,所以我们必须在 Routes 中手动缓存 View。这是真的吗?

Laravel 会自动缓存视图和路由。

视图缓存存在于:storage/framework/views

如果你想管理视图的缓存:

php artisan view:clear
php artisan view:cache

路由缓存存在于:bootstrap/cache/routes.php

如果你想管理路由的缓存:

php artisan route:clear
php artisan route:cache

【讨论】:

以上是关于Laravel:在路由与控制器上调用视图的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由到控制器动作

Laravel 路由在特定控制器名称上给出 500 错误

在刀片视图中显示路线的结果(Laravel)

Laravel教程 二:路由,视图,控制器工作流程

Laravel :: 路线与。控制器

Laravel 路由没有到达控制器