【问题标题】:Laravel - How to pass a fixed value to controller from a fixed url on routLaravel - 如何将固定值从固定的 url 传递给控制器
【发布时间】:2015-11-14 13:09:34
【问题描述】:

如果我的 url 是用户/新的,我想将 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=$1      [L,QSA]

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

【问题讨论】:

  • 收到 id = 0 后你想做什么?

标签: php .htaccess laravel routes


【解决方案1】:

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

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

// UserController.php

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

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

【讨论】:

  • 工作得很好,非常感谢。我真的不应该将其命名为 Edit,我想我将其命名为 Manage。反正Tnks。
【解决方案2】:

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

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

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

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

【讨论】:

  • 我真的很喜欢第一种方式,但它不起作用。我收到错误:“Container.php 第 736 行中的反射异常:类 UserController 不存在”我正在使用 Laravel 5,顺便说一句。
  • 您的控制器可能位于其他命名空间中。看到这个:laracasts.com/discuss/channels/general-discussion/…
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2018-12-20
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多