Laravel:当给定的参数无效时,将用户重定向到自定义404页面

情人

我制作了一个应用程序,用户可以在其中创建一些文件并查看模板中的所有数据。每篇论文都有一个joincode,它是在创建时生成的。

我在web.php中定义了加入路由,如下所示:

Route::get('/conceptPaper/lobby/{joincode}', 'App\Http\Controllers\ConceptPaperController@join');

并通过以下方式在控制器中加入联接功能:

public function join($joincode)
    {
        try { 
            $conceptPaper = ConceptPaper::where('join_code', $joincode)->firstOrFail();
            return response()->json($conceptPaper);
        } catch(ModelNotFoundException $e)
        {
            return view('errors.404');
        }
    }

我使用firstOrFail检查联接代码是否存在。如果存在,则应返回响应,否则应将用户重定向到自定义404页面。

我创建了一个自定义组件,该组件将联接代码作为路由参数获取并显示概念文件

{
        path: '/conceptPaper/lobby/:joincode',
        name: 'conceptPaper',
        component: () => import('./views/ConceptPaper.vue')
    },

因此,当用户使用正确的代码加入大厅时,他将被重定向到页面,其中包含来自相应论文的所有数据:

showPaper: async function (conceptPaper) {
      const joinCode = conceptPaper.join_code;
      this.$router.push({ name: "conceptPaper", params: { joincode: joinCode }, });
    },

我的问题是,当用户输入错误的代码时,他仍然会被重定向到视图。当我在“网络”标签中检查响应时,将显示404页面。

我认为我将它从根本上错了。谁能告诉我如何正确执行操作?当suer输入正确的联接代码时,他应该看到ConceptPaper.vue视图。如果代码错误,则应将其重定向到404页面。

从您的代码中,我假设您正在使用VueJs作为SPA,并且您正在从laravel后端API检索数据。

基于此,您的join函数应该返回您在前端中使用的json数据,但是如果ConceptPaper找不到,则返回一个视图而不是json,该视图不会有太大变化,因为您只是在更改数据前端收到的消息,但前端组件未更改。

我要做的是删除try catch块,该块将从API返回404响应,并在vue中处理404情况,并在vue中创建NotFound视图。

拉拉韦尔

public function join($joincode)
{
    $conceptPaper = ConceptPaper::where('join_code', $joincode)->firstOrFail();
    return response()->json($conceptPaper);
}

视图

router/index.js

const routes = [
  // previous routes
  {
    path: '/not-found',
    name: 'NotFound',
    component: () => import('../views/NotFound.vue')
  }
]

NotFound.vue

<template>
// page here
</template>
export {
    name: 'NotFound'
}

如果使用axios,最后处理未找到的API调用

axios.get('/conceptPaper/lobby/-1000')
  .catch(function (error) {
    if (error.response.status === 404) {
        this.$router.push('NotFound');
    }
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

网址以Dot结尾时重定向到自定义404页面

将用户重定向到自定义错误页面时返回404状态代码

React Router-嵌套链接重定向到自定义404页面

htaccess无法重定向到自定义404页面

.htaccess不会重定向到自定义404页面

使用Azure AD时将用户重定向到自定义登录页面

如何使用vue-router使用无效的URL参数重定向到404页面

使用ADFS和ASP.NET MVC时未授权用户将用户重定向到自定义页面

javascript 404页面自定义重定向失败

为Django提供自定义404页面后,它不会重定向

在Laravel 5.4自动重定向到404页面

登录后将用户重定向到同一页面

如果用户在页面名称后输入结尾的“ /”(或“ /”之后的任何内容),如何将用户重定向到错误404页面?

将用户重定向到同一页面,但重定向到特定选项卡

Azure AD B2C-使用自定义策略时,根据用户所属的目录将用户重定向到登录页面

Azure 重定向到自定义 404 页面

重定向到自定义404错误页面

当用户在Spring Boot应用程序中输入无效的URL时如何显示自定义404页面?

设计-用户更新失败时重定向到自定义页面

jsf commandButtonmanagedBean操作重定向到404页面

将错误的网址重定向到404页面

显示仅重定向到www的404页面

Laravel-根据登录表单上的语言字段将用户重定向到自定义网址

当某些文件不存在时.htaccess重定向到404页面

当点击网页中的语言更改链接时,LARAVEL 将用户重定向到他们正在查看的同一页面

仅当用户重定向到同一页面时才显示Div

路由参数无效时,角度2路由到404页面

自定义Apache 404页面

自定义404页面CSS?