silvertipsoftware/auto-responds

Laravel 的意见性视图响应

v0.1 2020-10-22 01:33 UTC

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 视图不需要包含此内容。

JSON