我知道浏览器只支持POSTGET个请求,而Laravel使用以下代码支持PUT个请求:

<?= Form::open('/path/', 'PUT'); ?>
    ... form stuff ...
<?= Form::close(); ?>

这将生成以下HTML

<form method="POST" action="http://example.com/home/" accept-charset="UTF-8">
    <input type="hidden" name="_method" value="PUT" />
    ... form stuff ...
</form>

框架如何处理这个问题?它是否捕获了决定将请求发送到哪个路由的POST个请求?它是否使用ajax向框架发送实际的PUT

推荐答案

它插入一个隐藏字段,该字段表示它是一个PUT或DELETE请求

See here:

echo Form::open('user/profile', 'PUT');

结果如下:

<input type="hidden" name="_method" value="PUT">

然后,在request.php核心文件中进行路由时,它会查找_方法(在代码中查找"欺骗"),如果检测到它,它会使用该值路由到正确的restful控制器.

它仍在使用"POST"来实现这一点.没有使用ajax.

Laravel相关问答推荐

拉威尔望远镜没有显示请求细节

Ziggy 路由默认为查询字符串

Laravel:在行的子集上同步多对多

Npm run dev 卡在 APP_URL

Eloquent的条件过滤器

允许的内存大小 134217728 字节用尽(试图分配 20480 字节) Laravel

Laravel 4:验证前修剪输入的最佳实践

Laravel Request::input 调用未定义的方法

Laravel 中的合同和 PHP 中的接口有什么区别?

使用限制排队 Guzzle 请求

调用未定义的方法 Maatwebsite\Excel\Excel::load()

如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit

Laravel 中的填充方法不起作用?

WhereHas Laravel 中的关系计数条件是什么

如何在 Laravel 视图中找到当前语言?

Laravel Eloquent 多态一对一?

Select,where JSON 包含数组

Laravel 5.4 - Mix - 如何运行浏览器实时重新加载

Laravel 5 - 跳过迁移

如何从 laravel 5.1 中数据库表的 created_at 属性中 Select 年份和月份?