我的表单需要额外的数据,我应该在哪里放置我的路由和控制器方法来获取它?

My form requires additional data, where should I put my routes and controller methods to get it?

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

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

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

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

既然你有另一个实体,你可以制作另一个控制器。假设您想在 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]);
}