带有请求体的Laravel DELETE方法

时间:2017-11-14 20:47:59

标签: php laravel http laravel-5 http-delete

我一直在尝试向我的删除方法添加带有规则和消息的>>> LEDMatrix.toggle = toggle # Inject our method in example class. >>> ledmatrix = LEDMatrix() >>> dir(ledmatrix) # We remove magic methods from display for clarity. [ 'ledg_1_1', 'ledg_1_2', 'ledg_1_3', 'ledg_2_1', 'ledg_2_2', 'ledg_2_3', 'ledg_3_1', 'ledg_3_2', 'ledg_3_3', 'ledr_1_1', 'ledr_1_2', 'ledr_1_3', 'ledr_2_1', 'ledr_2_2', 'ledr_2_3', 'ledr_3_1', 'ledr_3_2', 'ledr_3_3', 'toggle' ] >>> ledmatrix.ledg_1_1.visible # AttributeError >>> ledmatrix.toggle([0, 1, 0, 1, 1, 1, 0, 1, 1]) >>> ledmatrix.ledg_1_1.visible # False >>> ledmatrix.toggle([1, 1, 0, 1, 1, 1, 0, 1, 1]) >>> ledmatrix.ledg_1_1.visible # True ,但请求将返回空白,并且规则每次都失败。

是否可以通过删除方法获取请求数据?

这是我的请求类:

FormRequest

控制器:

use App\Http\Requests\Request;

class DeleteRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'staff_id' => ['required', 'exists:users,uid'],
            'reason' => ['required', 'string'],
        ];
    }

    /**
     * Get custom messages for validator errors.
     *
     * @return array
     */
    public function messages()
    {
        return [
            'staff_id.required' => staticText('errors.staff_id.required'),
            'staff_id.exists' => staticText('errors.staff_id.exists'),
            'reason.required' => staticText('errors.reason.required'),
            'reason.string' => staticText('errors.reason.string'),
        ];
    }
}

1 个答案:

答案 0 :(得分:9)

尽管HTTP / 1.1规范没有明确说明DELETE请求不应该有实体主体,但是某些实现完全忽略了包含数据的主体,例如:一些版本的Jetty和Tomcat。另一方面,一些客户也不支持发送它。

将其视为GET request。你见过表格数据吗? DELETE请求几乎相同。

您可以阅读有关该主题的很多内容。从这里开始:
RESTful Alternatives to DELETE Request Body

您似乎希望更改资源的状态而不是销毁资源。软删除不是删除,因此需要支持实体主体的PUTPATCH方法。如果不是软删除,则通过一次调用进行两次操作。