【问题标题】:My form requires additional data, where should I put my routes and controller methods to get it?我的表单需要额外的数据,我应该把我的路由和控制器方法放在哪里来获取它?
【发布时间】:2020-12-23 08:57:42
【问题描述】:

我正在学习如何使用 laravel 创建 Web 应用程序,但我不知道为这个示例表单创建结构的正确方法:

我有一个名为 PostController 的简单控制器,其中包含以下方法: index(), create(), store(), show(), edit(), update(), destroy() 通过make:controller --resource 创建。 我在通过Route::resource() 方法创建的 web.php 文件中有它的路由。

现在,我在 PostController 中的create() 方法会显示一个用于创建新帖子的表单,但此表单需要从列表中选择一个选项。 我无法显示整个列表,因为我想要创建使用 ajax 从我的数据库中获取可用选项的搜索字段有数千个选项。然后用户只需选择一个选项即可发送表单。

这当然只是一个例子,但在这种情况下,我应该将我的方法控制器和路由放在哪里来搜索选项? 我应该在我的 PostController 中创建其他方法(即 searchOption( $string ) )还是应该是新的控制器? 如果它应该是新控制器,那么您对文件夹/名称结构有什么建议吗? 我应该把我的路线放在哪里?还在 web.php 中吗?还是 api.php? 再说一遍,我应该如何命名这条路线?

【问题讨论】:

  • 本题目前多题合二为一。它应该只关注一个问题。

标签: laravel rest routes controller


【解决方案1】:

如果你有另一个实体,你可以制作另一个控制器。假设您想在 Post 的创建视图中过滤 City

// Controllers/Api/CityController.php
public function index(Request $request)
{
    $query = City::query();

    if ($request->has('search')) {
        $query->where('name', 'LIKE', $request->input('search') . '%');
    }      

    $cities = $query->paginate();

    return response()->json(['cities' => $cities]);
}

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 2016-12-21
    • 2010-09-28
    • 2019-07-11
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多