将JavaScript添加到PHP表单将抛出Symfony Component HttpKernel Exc
Adding JavaScript to PHP form throws Symfony Component HttpKernel Exception MethodNotAllowedHttpException
我必须为类分配做一个php表单。然后,我们不得不使用另一种语言修改表单,使其更有功能。
我决定添加JavaScript,以便用户可以添加多个部分。在我添加了JavaScript之后,我现在得到了这个错误:
Symfony ' Component ' HttpKernel ' Exception ' MethodNotAllowedHttpException
格式如下:
{{ Form::open() }}
@for ($i=0; $i < 10; $i++)
<input type="number" name="part_number" placeholder="Part Number" />
<input type="number" name="quantity" placeholder="Quantity" />
<input type="number" name="annual_usage" placeholder="Annual Usage" />
<input type="submit" value="Add Part" />
@endfor
<input type="textarea" name="comment" placeholder="Comment" />
<input type="text" name="shippingaddress" placeholder="Shipping Address" />
<input type="text" name="project_id" placeholder="Project Id" />
<input type="text" name="user_id" placeholder="User Id" />
<input type="submit" value="Send Requests" />
{{ Form::close() }}
这不是关于JavaScript
,相反,Laravel
使用POST
方法默认提交表单,MethodNotAllowedHttpException
发生时,你在你的应用程序(基本上在routes.php
文件)声明路由使用一种方法(GET, POST, DELETE等),但使用不同的方法提交表单。
确保表单提交的路由和表单中使用的方法是相同的。如果你没有在表单中明确地提到一个方法,那么默认情况下它将是POST
,你可以使用不同的方法,像这样:
{{ Form::open( array( 'action' => 'Controller@method', 'method' => 'GET') ) }}
或者像这样:
{{ Form::open( array( 'route' => 'routename', 'method' => 'GET') ) }}
或者像这样:
{{ Form::open( array( 'url' => 'your/url', 'method' => 'GET') ) }}
为了更清楚,如果你用这样的方式声明了一个路由:
Route::get(...);
然后在表单中使用GET
方法,或者使用其他方法,但如果使用post()
,则不需要在表单中使用任何方法。在Laravel网站上查看更多信息。
同样你的循环是不正确的,你的输入有相同的名字,所以最后一个将覆盖前面的,你将只得到一个输入每个名字,使用数组符号在name.
我没有看到任何javascript在你的形式,但不管javascript单独不会导致这种情况。这个错误是说,"你试图用不正确的HTTP方法访问路由",基本上你试图POST到一个只允许GET访问的路由。
默认情况下,Laravel表单将使用POST。您可以尝试将表单上的方法更改为GET:
{{ Form::open([ 'method' => 'GET' ]) }}
但实际上它应该是你在app/routes.php
文件中为你想要访问的路由定义的任何内容。
作为题外话,当表单实际提交时,这些输入将相互覆盖,因为它们在for循环中重复时会产生名称冲突:
<input type="number" name="part_number" placeholder="Part Number" />
<input type="number" name="quantity" placeholder="Quantity" />
<input type="number" name="annual_usage" placeholder="Annual Usage" />
考虑让他们提交一个数组:
<input type="number" name="part_number[]" placeholder="Part Number" />
<input type="number" name="quantity[]" placeholder="Quantity" />
<input type="number" name="annual_usage[]" placeholder="Annual Usage" />
- Symfony 2,在 Javascript 中访问实体对象
- FullCalendar backend PHP/JS to symfony 3
- 使用$scope的最佳实践$apply();或者甚至是使用Angular Component的非Angular内容中的$
- 在 Symfony 中防止 XSS
- Symfony表单提交而不重新加载页面
- Symfony Twig+Haml标记属性检查和属性脚本
- Symfony sfValidators:动态设置是否需要值
- symfony 2 trick访问数组javascript索引
- Uncaught TypeError:对象原型在Symfony 2中只能是Object或ExtJS为null
- Angular 2 Component自定义属性在构造函数中为null
- 在一个扩展了Sonata管理twitch/Symfony 2的twitch中调用javascript(ExtJS)的问题
- 如何在angular 1.5中将angular component与ui.bootstrap.modal一起使用
- 原型&在SAPUI5(Component.js)中进行扩展
- symfony trick javascript函数未定义
- 在Symfony中,我如何在javascript中编写图像url
- 在 Symfony 3.0 上用 twig 生成 Javascript,而不用担心 Javascript 代码中的 {}
- Symfony 在 Ajax 响应中获取 PHP 变量
- Symfony - 嵌入表单中的食谱“添加新标签”不起作用
- Symfony:通过GET将变量发送到Ajax的处理程序
- 将JavaScript添加到PHP表单将抛出Symfony Component HttpKernel Exc