我目前正在尝试http://altorouter.com/,到目前为止,它对我来说效果很好,除了我遇到的这个问题
我的路线设置如下:
$router->map( 'PATCH', '/admin/pages', 'pageController@update');
如果我使用以下jquery,则路由可以正常工作:
$.ajax({
type: "PATCH",
url: "/admin/pages",
data: {page_items:page_items, page_name: 'test_page'},
success: function(returned_data)
{
console.log(returned_data);
}
});
但是,无论我在HTML中放入什么内容,都无法以接受PATCH的方式提交常规表单:
<form action="/admin/pages" method="post">
<input type="hidden" name="form_function" value="edit_theme">
<input type="hidden" name="_METHOD" value="PATCH">
<button type="submit">Save Page</button>
</button>
我已经尝试过“ _METHOD”,“ _ method”,“ method”等。它们都不起作用。
我也尝试过
method="PATCH"
但这只会导致它执行GET。
当我在目标页面上回显$ _SERVER ['REQUEST_METHOD']时,我得到的ajax为“ PATCH”,但表单的为“ POST”。希望有人能帮忙。
参考方案
简而言之,您不能。
如您在W3 Spec中看到的
基于HTML的表单的唯一有效方法是“ GET”和“ POST”。
但是,您可以根据需要在服务器端解决此问题。这里有一篇有关Laravel如何做到的好文章:Theres no Put/Patch Delete Methods
该文章的简短代码片段:
<form method="POST" action="" accept-charset="UTF-8">
<input name="_method" type="hidden" value="PUT">
</form>
<form method="POST" action="" accept-charset="UTF-8">
<input name="_method" type="hidden" value="PUT">
</form>
如果您不使用Laravel并希望手动构建表单,则不能使用PUT / PATCH-浏览器中的表单不支持这种方法-只是GET和POST。那么Laravel如何使其与{{Form :: create(['method'=>'PUT'])}}一起使用?
实际上,在幕后生成的HTML看起来像这样:
没错,Laravel构造了一个名为_method的隐藏字段,
然后在提交表单时检查它,将其路由到正确的位置
控制器方法。
因此,如果出于任何原因您需要自己构建FORM标签,
不要放(适用于补丁和删除)-它
就是行不通。如有必要,请添加隐藏字段。
回到您的问题,Altorouter。似乎他们的文档在这里为我找到了最好的指南,https://recalll.co/app/?q=rest%20-%20PHP%20detecting%20request%20type%20(GET%2C%20POST%2C%20PUT%20or%20DELETE)%20-%20Stack%20Overflow在寻找更好的路由器时可能值得您这样做,因为Alto似乎在3年左右没有更新。
PHP-复选框组 - php我有一个需要发布的表单复选框组。<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name=…
Div单击与单选按钮相同吗? - php有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date…
PHP Count数组元素 - php嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…
PHP:从函数返回值并直接回显它? - php这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…
PHP:将数据从二维数组复制到一维数组的最快方法 - php我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…