【问题标题】:Q: Is there any way to use two GET routes with two different methods on a single controller in Laravel?问:有没有办法在 Laravel 的一个控制器上使用两种不同方法的两个 GET 路由?
【发布时间】:2020-11-08 03:42:10
【问题描述】:

除了对两种用户类型使用两个配置文件控制器之外,是否可以使用一个控制器和两种不同的方法来显示每种用户类型的配置文件?

目前只有申请人路线有效,但如果切换顺序,另一条显示404 | Not Found

Route::get('/accounts/{applicant}', 'ProfileController@applicant');
Route::get('/accounts/{employer}', 'ProfileController@employer');

class ProfileController extends Controller
{
    public function applicant(Applicant $applicant)
    {
        return view('applicant.show', compact('applicant'));
    }

    public function employer(Employer $employer)
    {
        return view('employer.show', compact('employer'));
    }
}

【问题讨论】:

  • 不可能
  • 问题是 URL 看起来像 /accounts/10,如果你的申请人和雇主都有相同的 ID,你就无法区分。如果您不能拥有相同的 ID,那么您可能只有一个操作和分支,具体取决于您获得的 ID 类型
  • 实际上可以使用路由参数匹配,但是如果您没有明显不同的参数格式,即。你对两者都使用 id 然后你不能这样做。 laravel.com/docs/7.x/…。你甚至可以调整 laravel 对特定模型的路由模型绑定方式,所以即使是控制器在理论上也是可能的
  • 参数匹配就是答案,OP使用不同的参数:)
  • 确实如此,这是不可能的。谢谢大家的答案! :)

标签: php laravel laravel-7


【解决方案1】:

你不能。两条路线上的请求本身没有区别。要么您使用另一条路线,要么制作一个可以同时处理 applicantemployer 的方法,但您仍然需要弄清楚如何区分这两者。

【讨论】:

  • 目前对我来说使用不同的路线听起来很容易,谢谢@sykez。
猜你喜欢
  • 2020-01-03
  • 1970-01-01
  • 2019-08-21
  • 2015-03-12
  • 2015-06-21
  • 1970-01-01
  • 2019-10-26
  • 2018-04-25
  • 1970-01-01
相关资源
最近更新 更多