【问题标题】:Correct use of Ressource Controller in Laravel在 Laravel 中正确使用资源控制器
【发布时间】:2019-03-08 00:08:12
【问题描述】:

我使用 Laravel 资源控制器,但我不确定我是否以正确的方式使用它。我从一个简单的视图返回开始,我把它放在创建函数中。在此视图中,我将名称写入文本字段并单击运行函数索引的提交按钮。默认索引函数只有 index() 由于 post 请求,我将其更改为 index(Request $request)。但我不认为 index 是满足这种需求的正确功能。这是完整的控制器。

public function index(Request $request)
{
    $username = $request->username;
    $user = User::where('name', $username)->select('id', 'name')->first();

    return view('invitation.username')->with('user', $user);
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('invitation.username');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

将代码放在哪里?什么是满足我需求的正确功能?还是我应该创建一个新函数?

【问题讨论】:

  • 先显示你的路线
  • 首先请告诉我们更多关于您打算做什么的信息? index 通常用于整个资源的小“主屏幕”,例如显示包含所有用户的表格。所以index 可能不是最适合你的。根据您的需要,它应该是show 的派生词,或者基于返回的视图的createWithUser(与create 上的视图相同)。如果您能提供更多信息,我们可以提供更好的帮助。

标签: laravel controller


【解决方案1】:

资源控制器可能不是这种模式的最佳选择。

  • 索引 - 显示与控制器关联的模型的资源列表
  • 创建 - 显示用于创建模型的表单
  • 存储 - 接受来自创建表单的 POST 请求
  • 显示 - 显示单个资源
  • 编辑 - 显示用于编辑模型的表单
  • 更新 - 接受来自编辑表单的 PUT 请求以更新模型。

对于您的情况,我认为更合适的函数命名法是:

public function search()
{
    return view('invitation.search');
}

然后显示这些结果:

public function results()
{
    return view('invitation.results')
        ->with('user', User::where('name', request()->input('username'))->first());
}

尽管这可以进一步解释和推断以增加对额外字段搜索的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2014-10-07
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2020-12-09
    相关资源
    最近更新 更多