Laravel - 如何在溃败时将固定值从固定的 url 传递给控制器

Laravel - How to pass a fixed value to controller from a fixed url on rout

如果我的 url 是 user/new,我想将 ID“0”传递给控制器​​,我如何在 laravel 中的 route.php 上执行此操作?

我是这么想的,没想到这么简单。

Route::get('user/new','UserController@edit', ['id'=>'0']);
Route::get('user/edit/{id}','UserController@edit');

使用普通的 .htaccess 我会做这样的事情:

RewriteRule ^user/new    /www/user/edit.php?id=0        [L,QSA]
RewriteRule ^user/(.*)    /www/user/edit.php?id=      [L,QSA]

我需要中间件吗?有更简单的方法吗?

我不确定你为什么要这样做,但你可以在你的控制器中做这样的事情:

function newuser()
{
    return $this->edit(0);
}

function edit($id)
{
    // Do stuff
}

一种方法是在您的路线中使用闭包,如下所示:

Route::get('user/new', function() {
    return App::make('UserController')->edit(0);
});

但是 Laravel 方法是使用 RESTful resource controllers,它会为您创建、编辑和删除路由:

Route::resource('user', 'UserController');

这在语义上很奇怪,创建一个具有 edit 函数的用户,无论如何...

为什么不使用 php 默认参数值?

// UserController.php

public function edit($id = 0) // NOTICE THIS
{
  // your id is zero if none passed (when /new is called)
}

您已经存在的 edit 不会改变,您不必更改路线。