合并两个路由代码有什么区别?
一个没有控制器,第二个有控制器:
版本1
Route::get('/', function () {
return view('front/index');
})
版本2
Route::get ('/main', 'MainController@index');
答案 0 :(得分:0)
版本1 返回路线“ /”以及在“前/索引”中找到的视图
版本2 返回位于“ / main”的路线
答案 1 :(得分:0)
第一个是直接使用函数返回视图,因此当您点击路线'/'时,它将返回视图前/索引。 front-> index.blade.php
另一个正在调用具有功能索引的Controller'MainController'
public function index() {
return view('front.index);
}
,当您点击/ main url时,它将从控制器'MainController'返回索引函数。 他们正在做同样的事情,但是从长远来看,使用Controller可以帮助您更轻松地组织代码和东西
希望有帮助
答案 2 :(得分:0)
在Laravel中,您可以完全跳过控制器并执行执行业务逻辑并在路由中生成视图的任务,例如:
Route::get('/users',function()
{
$users = User::All(); //select * from users
return view('users')->with('users', $users);
}
因此,在这里为请求/users
提供服务时,我们根本没有使用控制器,您可以很好地完成此操作,以处理应用程序中的所有请求,包括get和post。
Laravel允许您在闭包(function(){})
中完成工作,而不是将其绑定到控制器。无论如何,它可以让您,但最好避免使用它。
但是,如果您的应用程序很大并且具有复杂的业务逻辑的100多个URL,那么可以想象将所有内容放在一个route / web.php中。这将完全使之犯罪,并且将破坏MVC架构的全部目的。因此,我们通常要做的是保留web.php
仅用于路由并编写所有业务逻辑(以及在控制器内部生成视图)。
在Route::get()
中,您只应使用“路由”,仅此而已。
没有理由让您在Route中使用回调(除非用于测试或一些琐碎的请求)。因此,最好避免这种情况:
更改此代码:
Route::get("/", function(){
return view("front.index");
});
对此:
Route::get ('/', 'MyController@index');
在您的控制器内:
class MyController extends Controller
{
function index()
{
return view("front.index");
}
}
希望有帮助。