silvertipsoftware / auto-responds
Laravel 的意见性视图响应
Requires (Dev)
- orchestra/testbench: ^4.0
This package is not auto-updated.
Last update: 2024-09-17 10:29:25 UTC
README
Laravel 的意见性响应发现。
关于
与从每个控制器方法中特别返回视图或对象相比,AutoResponds 特性基于路由、控制器和所需的响应格式来确定和自动创建响应。在大多数情况下,这意味着您的控制器方法变成了只读查询。
然而,重要的是,控制器方法的返回值(大多数情况下)以与原生方式相同的方式处理,所以如果需要更细粒度的控制,您也可以做到。
注意事项
- 您必须在控制器中的
controllerRootNamespace()
函数中返回正确的命名空间。我们提供了正确的默认值,但您可能需要根据您的配置更改它。Laravel 似乎不提供对这个参数的访问。 - 这仅适用于基于控制器的路由。
安装
- 在您的
composer.json
中要求silvertipsoftware/auto-responds
包,并更新您的依赖项
$ composer require silvertipsoftware/auto-responds
-
在您的基
Controller
中添加use AutoResponds
,或您想添加它的任何地方。 -
如果您使用的是非标准配置,在同一个控制器中实现
controllerRootNamespace()
。
基于视图的响应和命名
默认情况下,视图的发现基于被调用的控制器操作,并以前置的任何中间命名空间为前缀。例如,对于 HTML 格式,基于默认的根控制器命名空间
如果您正在使用 JavaScript 请求/响应(例如 UJS 或其他即时 JavaScript 库)
使用路由名称
如果您更喜欢,视图名称可以基于路由名称(例如在您的路由文件中使用 'as'
定义),向您的基控制器添加以下内容
protected $useActionForViewName = false;
现在名为 users.index
的路由将映射到名为 users.index
的视图(或 JS 格式的 users.js.index
)。
覆盖检测
在某些情况下,您可能希望为特定的操作使用特定的视图。在这种情况下,在您的操作中设置 viewNameForResponse
属性。例如
public function index($request) { if (!\Auth::user()) { $this->viewNameForResponse = 'need_to_login'; } }
您还可以返回任何标准的 Laravel 响应,从字符串到视图,到模型实例。在这些情况下,绕过了 AutoResponds 功能。
例外情况是对于 JavaScript 格式,其中使用了特定的视图响应。默认情况下,AutoResponds 查找名为 js_redirect
的视图,并将目标位置作为 redirectToUrl
变量传递。通常,这看起来像
window.location.href = '{{ $redirectToUrl }}';
但您可以根据需要自由操作。
特定格式的说明
JavaScript
JavaScript 响应都是自动包装为立即调用的函数表达式(或自执行匿名函数),以封装变量等。您的 JavaScript 视图不需要包含此内容。