Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException,删除按钮
Posted
技术标签:
【中文标题】Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException,删除按钮【英文标题】:Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException, delete buttonSymfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException,删除按钮 【发布时间】:2015-01-07 07:25:19 【问题描述】:我有一个罕见的问题,我正在使用 Laravel 4 和 php,我在 jQuery datatable
中有一个 "Delete" 按钮,我正在删除注册表,当我按下按钮时(在除第一个数据之外的任何其他数据中)调用tipos.destoy
方法并且工作正常!但是当我按下第一个 Delete 按钮时,它会抛出异常:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException.
路线:
Route::resource('tipos', 'TiposController');
控制器:
public function destroy($id)
$this->tipo->find($id)->delete();
return Redirect::route('tipos.index');
型号:
protected $guarded = array();
protected $table = 'tipos';
protected $fillable = array('clave_tipo', 'nombre_tipo', 'created_by', 'updated_by');
public static $rules = array(
'clave_tipo' => 'required',
'nombre_tipo' => 'required',
'created_by' => 'required',
'updated_by' => 'required'
);
查看:
@foreach($tipos as $tipo)
<tr>
<td> $tipo->clave_tipo </td>
<td> $tipo->nombre_tipo </td>
<td> link_to_route('tipos.edit', 'EDITAR', array($tipo->id), array('class' => 'btn btn-success')) </td>
<td>
Form::open(array('method' => 'DELETE', 'route' => array('tipos.destroy', $tipo->id)))
Form::submit('Delete', array('class' => 'btn btn-danger'))
Form::close()
</td>
</tr>
@endforeach
我不知道为什么它对所有其他按钮都能正常工作,但只有 第一个 按钮会引发异常。 任何帮助将不胜感激。
【问题讨论】:
当您在 Form::open() 中指定路由时,您不必设置 http 方法。 对不起,我不明白,请你说的更具体些。 只是为了澄清您的问题,您的具体问题是当您单击上方表单中的btn-danger
元素时,Laravel 会抛出 MethodNotAllowed
异常?
是的,只有在 btn btn-danger 中,我有一个数据表,所以我有很多删除按钮,但只有当我按下第一个(删除)按钮时,才会抛出异常,当我按下任何其他删除按钮(第一个除外)都可以正常工作,并且数据表会删除寄存器。
我看不出您的表单有任何明显错误,但我会提到,如果您 1) 检查表单的渲染 html 输出以确保它与您的匹配,它可能会帮助您调试它会期望,并且 2) 验证 URL after 单击删除按钮之一是否符合您的预期。其中一个很可能以某种方式关闭
【参考方案1】:
我解决了问题,我只是添加另一个表单:
<td>
<form method="POST" action="http://localhost/posm/public/tipos/" accept-charset="UTF-8"><input name="_method" type="hidden" value="DELETE"><input name="_token" type="hidden" value="zrWDtdGVRnzreYGnZizSHqeIo7jPQlXBlGP03iJW">
</form>
Form::open(array('method' => 'DELETE', 'route' => array('tipos.destroy', $tipo->id)))
Form::submit('Delete', array('class' => 'btn btn-danger'))
Form::close()
</td>
我不清楚为什么我必须这样做,我认为是 laravel 的错误或其他什么,但它有效,谢谢!
【讨论】:
以上是关于Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException,删除按钮的主要内容,如果未能解决你的问题,请参考以下文章