【问题标题】:Laravel route not defined but route exists and works in tinkerLaravel 路线未定义,但路线存在并在修补程序中工作
【发布时间】:2019-03-07 12:58:35
【问题描述】:

我收到未定义路线错误:

路线 [my_category.my_item] 未定义。 (查看:/home....blade.php) ...

对于以下代码(来自 Sentry 的 c/p 并带有一些格式)

<?php $__env->startComponent('mail::button', [
  'url' => route('my_category.my_item', [
    'days' => 7,
    'email' => isset($email) ? $email : 'e@example.com',
    'confirm_code' => isset($token) ? $token : 'confirm-code'
  ])
]); ?>

这是从邮件组件视图生成的。如果我 SSH 到我的服务器,请从上面复制函数:

route('my_category.my_item', [
    'days' => 7,
    'email' => isset($email) ? $email : 'e@example.com',
    'confirm_code' => isset($token) ? $token : 'confirm-code'
  ])

并在修补程序中运行它我得到了我的路线,没有问题。另外,如果我运行php artisan route:list | grep my_category.my_item,我可以在那里看到我的路线。

本地服务器:没有问题。暂存服务器:没有问题。

本地和暂存服务器分别使用 MailHog 和 Log 作为邮件驱动程序,而生产使用 MailGun,但我看不出这会如何影响任何事情。

路由不会缓存在任何服务器上。

我会错过什么?谢谢!

更新:

在线web.php

Route::get('/my-category/my-item/{days}/{email}/{token}', 'MyCategoryController@notifyMe')->name('my_category.my_item');

我现在看到路由中有token 而不是confirm_code。让我尝试解决这个问题,看看会发生什么。虽然它确实可以在其他两台服务器上运行:/ - 刚刚尝试过,仍然是相同的行为。

【问题讨论】:

  • 您能否在routes/web.php 中显示您创建此路线的行?
  • 把这个'confirm_code' =&gt; isset($token) ? $token : 'confirm-code'改成'token' =&gt; isset($token) ? $token : 'confirm-code'
  • 刚做了,推送到服务器还是一样。
  • 只是一个小问题,您是从您的路线或查看文件中发布完全相同的代码吗?
  • 不,但我唯一要更改的是 my-categorymy-item 在我的查询中是 something-elseanother-thing。是的,控制器有不同的名称。我想我已经完成了,我正在使用本地化并只是调查一些事情。我会回来更新问题。

标签: laravel routes laravel-5.6


【解决方案1】:

我正在使用LaravelLocalization,并且我的管理路由(未使用此本地化 - 未翻译)被分组到 LL 中间件中。

将我的管理路由移到 LL 中间件组之外解决了这个问题。

这对我来说仍然是个谜,为什么这在我的其他两台服务器上工作,因为代码是相同的(仔细检查过)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2023-03-29
    • 1970-01-01
    • 2017-06-04
    • 2020-12-25
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多