这两条线路代码有什么不同?
一种是没有控制器,第二种是有控制器:
Route::get('/',function () { return view('front/index');})
路由::get ('/main','MainController@index');
发布于 2019-06-24 08:47:04
版本1返回路由‘/’以及在‘front/index’中找到的视图
版本2返回‘/main’处的路由
发布于 2019-06-24 09:45:33
第一个方法是用函数直接返回一个视图,所以当你点击route '/‘时,它将返回view front/index。front->index.blade.php
另一个是调用控制器'MainController‘,它有函数索引:
public function index() {
return view('front.index);
}
当你点击/main url时,它将从控制器'MainController‘返回索引函数。它们都在做同样的事情,但从长远来看,使用Controller可以帮助您更容易地组织代码和内容
希望能有所帮助
发布于 2019-06-24 10:30:37
在Laravel中,您可以完全跳过控制器,并在路由中执行执行业务逻辑和生成视图的任务,例如:
Route::get('/users',function()
{
$users = User::All(); //select * from users
return view('users')->with('users', $users);
}
因此,为了处理请求/users
,我们根本没有使用控制器,您可以很好地处理应用程序中的所有请求,包括get和post。Laravel允许您在闭包(function(){})
中完成工作,而不是将其绑定到控制器。无论如何,它允许你,但你最好避免它。
但是,如果您的应用程序很大,并且具有具有复杂业务逻辑的web.php,那么想象一下将所有内容都放在一个100+ /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");
}
}
希望能有所帮助。
https://stackoverflow.com/questions/56728668
复制相似问题