当前位置: 首页 > 知识库问答 >
问题:

laravel路由回调返回控制器

乐正烨熠
2023-03-14

你好,我是拉威尔的新手,也许这对你们来说太傻了。在laravel 8中,路由web。php我创建了一条如下的路线:

Route::get('/', function () {
    return view('login');
});

Route::post('/auth', 'App\Http\Controllers\SiteController@auth');

Route::get('/home', function () {
    if (session()->has('username')) return view('home');
    else return redirect('/');
});

Route::post('/editprofile', 'App\Http\Controllers\SiteController@edit_profile');

我想问的是,我们也可以从回调视图返回控制器吗?所以在路由 /editprofile中,第二个参数不是'App\Http\Controller\SiteController@edit_profile',而是一个回调函数,如路由'/home'。

Route::post('/home', function () {
    if (session()->has('username')) return controller('App\Http\Controllers\SiteController@edit_profile');
    else return redirect('/');
});

但是它返回错误哈哈。假设我不想用__construct方法来检查会话。可能吗?提前感谢

共有1个答案

袁鸿雪
2023-03-14

首先,,

因为您是从if语句返回的,所以不需要其他语句

这个啊

Route::get('/home', function () {
    if (session()->has('username')) return view('home');
    else return redirect('/');
});

应该是这样的,;

Route::get('/home', function () {
    if (session()->has('username')) {
        return view('home');
    }

    return redirect('/');
});

第二,不必担心路由中的其他部分,只要将其传递给控制器,就可以在其上抛出路由中间件。下面是基本的身份验证中间件,但您也可以创建自己的身份验证中间件

use App\Http\Controllers\UserController;

Route::get('/home', [HomeController::class, 'index'])->middleware('auth');

你可以在这里阅读更多关于中间件的信息https://laravel.com/docs/8.x/middleware

 类似资料:
  • 我部署基本Laravel项目到服务器。当我点击我的域名,它返回默认的欢迎视图。当我把简单的道路(见下文)添加到代码中,并尝试在浏览器中输入该路线时,它会返回500个内部错误。除"/"根路由外,所有路由都返回500错误。 文件夹结构: Laravel文件位于Laravel目录中,但来自公共目录的文件位于api目录中。 .api目录中的htaccess文件: 存储目录和其中的所有内容对任何人都是可写、

  • 我有一个简单的Laravel项目。在路由中,我指定返回视图。现在我想另外得到直接在我的公共文件夹与图像,css等,通过添加更多的东西到链接让说将返回我我如何到达文件夹通过?

  • 我使用的Spring Boot版本是2.2.5,Apache Camel版本是3.0.1。

  • 我正在编写一个Spring Boot应用程序。我编写了一个简单的控制器,每当endpoint被命中时就会被调用,但它仍然返回状态404,而不是指定的返回值。 HelloController 现在,每当我调用时,我都会看到控制台日志,但是永远不会返回。邮递员输出: 应用JAVA

  • 我试图利用Laravel5.7中新的签名中间件,但由于某些原因,生成的签名URL返回403个无效签名。 我使用最新的Laravel版本,PHP 7.2 这是我的web.php路线: 这是在我的控制器: 生成URL并显示如下内容: https://example.com/report/1/1?expires=1545440368 但是,当我点击链接时,结果是403,并显示消息:“无效签名” 有什么想

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电: