当前位置: 首页 > 知识库问答 >
问题:

如何覆盖laravel资源路由?

陆信瑞
2023-03-14

我不认为这篇文章我如何覆盖laravel资源路由默认方法?解决了我的问题。

正常的资源路由是“索引”显示所有项目。我想做的是让“索引”显示一个特定ID的所有相关项目。

因此,当我从列表中选择一个教室时,我需要调用的索引操作,以显示该特定教室的所有人员,就像它的索引函数一样。

所以我替换了默认的资源路由

//Route::resources(['attendees' => 'attendeesController']);

Route::resource('attendees', 'attendeesController')->names([
    'index'   => 'attendees.index',
    'store'   => 'attendees.store',
    'create'  => 'attendees.create',
    'show'    => 'attendees.evaluation',
    'update'  => 'attendees.update',
    'destroy' => 'attendees.destroy',
    'edit'    => 'attendees.edit',
]);

所以在我的控制器中,我有这样的内容:

public function index(Request $request,$id)
{
    dd($request);
    ...
}

在我的教室里,在一个特定的教室id上,我有这个

<a href="{{route('attendees.index', ['classroom' => $data->id])}}">{{$data->Reference}}
  • 就我所见,我正在将参数传递给控制器。
  • 并且控制器设置为需要一个$ID参数

那我为什么要得到这个?我猜的是一些很基本的东西,但我看不出来是什么。

Type error: Too few arguments to function
App\Http\Controllers\AttendeesController::index(), 
1 passed and exactly 2 expected

共有1个答案

仉姚石
2023-03-14

默认情况下,index操作需要$ID,因此您可以将其设置为null

public function index(Request $request,$id = null)

此外,如果您希望根据文档URL获取特定$ID的相关项,则为Attendees/123,它将重定向到show函数。因此您也需要编辑该路由。相反,请尝试将查询参数传递给索引路由,并使用该查询参数获取相关数据。不是与会者/123而是与会者?id=123

查询参数设置为显示相关项,否则显示索引。如果您仍然希望通过索引实现它,您需要如下所示更改路由

Route::resource('attendees', 'AttendeesController',['only' => ['index', 'create', 'store']]);

Route::get('/attendees/{id}', 'AttendeesController@index');
 类似资料:
  • 问题内容: 我有一个现有的Java / JSF网站,屏幕上的所有文本都是通过 来自属性文件的,该文本将从applicaltion.properties中提取。 对于这些的运行时可配置子集,我想从其他位置(通过Web服务进行CMS)中提取字符串。看一下ResourceBundle类,大概有一个基础设施,可以委派给父ResourceBundle。 我想要这样的东西 我已经尝试过了,parent是空的,

  • 我正在寻找一种方法来覆盖GuiceServletContextListener中与guice绑定的jersey资源。我的代码,我正在努力工作: 但不幸的是,这不起作用,虽然我不能像接口一样将jersey资源绑定到实现,但只有work。但是这样的绑定是不可能覆盖的。如果我试图用覆盖,我会收到一个错误而@Path应该是唯一的。那么我的用例有什么解决方案吗?

  • 有时我会看到这样的警告: 如果我重写或不重写布局资源会发生什么?

  • 我正在使用JWt all方法(索引、存储、显示等)在laravel中创建待办事项应用程序,路由资源中的所有方法(索引、存储、显示等)工作正常,除了结果更新外,其工作正常,并获得成功响应,但数据库中没有更改 **对不起,我的英语不好 应用程序编程接口。php BaseController。php TodoController。php 这是《邮差》的结果 https://i.stack.imgur.c

  • 我正在尝试制作maven配置文件,它将使用两种不同的DBMS。DBMS配置存储在maven配置文件中。Web应用程序从src/main/resources中的文件connection.properties获取设置。在src/test/resources中还有一个标题相同的类似文件connection.properties,该文件只应在测试lyfecycle Maven期间上传。然后spring c

  • 问题内容: 我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我了解的文档资料,我需要能够覆盖Backbone.sync 。 在文档本身中没有如何执行此操作的示例,并且似乎没有用于Backbone的google组…有人可以指出执行此操作的示例吗? 问题答案: 看看这个带注释的源示例,在该示例中,它们被本地存储替代项覆盖 基本上,Backbone.sync应该是一个