我想创建一个包含两个链接的下拉列表。 “删除”和“修改”链接。
对于删除功能,我创建了一个表单。
{!! Former::horizontal_open()->method('DELETE')->action(action("Test\\TestController@destroythread", $comment->id)) !!}
{!! Former::danger_submit('Delete') !!}
{!! Former::close() !!}
表单有效,这意味着如果我按下按钮,我的评论就会被删除。
不,我决定删除删除按钮并使用删除链接执行下拉列表。所以我需要在下拉菜单中获取此表单的逻辑。
但我在下拉列表中没有这个...光学'删除'按钮是下拉列表中的一部分:
<li><a href="#">
Delete
</a></li>
但我不能把我的控制器功能放在“href-link”中,因为如果没有'DELETE'方法,它将无效。我希望你们都能理解我想说的话......无论如何,我的英语不是最好的。
有人可以帮我这个吗?
感谢您的帮助!
我之前尝试过这样做,但这也没有奏效:
<li>
<a>
{!! Former::horizontal_open()->method('DELETE')->action(action("Test\\TestController@destroythread", $comment->id)) !!}
Delete
{!! Former::close() !!}
</a>
</li>
我尝试直接链接到路线:
<li><a href="{{ route('destroy', $comment->id) }}">Delete</a></li>
我的路线看起来像这样:
Route::delete('/show/{id}', 'Test\\TestController@destroythread')->name('destroythread');
但这对我没用..
all / show / routes:
Route::get('/show/{id}', 'Test\\TestController@show');
Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\TestController@update']);
Route::get('/show/{id}/edit', 'Test\\TestController@edit')->name('edit');
Route::delete('/show/{id}', 'Test\\TestController@destroy')->name('destroy');
Route::delete('/show/{id}', 'Test\\TestController@destroythread')->name('destroythread'); // this is the route we are talking about
答案 0 :(得分:0)
Laravel使用方法欺骗来实现“删除”,“删除”,“补丁”和“补丁”。形式要求。就像@Jilson Thomas提到的那样,你可以直接创建一个到路线的链接。我怀疑你是否正在使用资源丰富的路线,这就是为什么你要尝试发布DELETE请求?
请查看路线文档中的此部分,这可能有助于您:https://laravel.com/docs/master/controllers#restful-supplementing-resource-controllers
根据您发布的路线,我相信以下两条路线在到达您想要的路线之前是匹配的。
Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\TestController@update']);
Route::delete('/show/{id}', 'Test\\TestController@destroy')->name('destroy');
尝试在上面移动您想要的路线,看看会发生什么。
修改强>
<li><a href="{{ route('destroy', $comment->id) }}">Delete</a></li>
这将产生一个GET请求,因此它不匹配Route :: delete(...)。之前的方法是将表单发布到路径。此外,将整个表单包装在锚标记中是无效的标记。
答案 1 :(得分:0)
因此,根据评论中的讨论,您必须使用ajax请求从锚标记执行delete
请求。
$.ajax({
url: '/show/'+$('#testId').attr('value'),
type: 'DELETE',
success: function(data){ if(data.success) alert('Deleted'); },
error: function() {}
});
并在您的路线中:
Route::delete('/show/{id}', ['as'=>'destroy', 'uses'=>'Test\\TestController@destroy']);
<强> HTML 强>
<li><a href="#" id="testId" value="{{$comment->id}}">Delete</a></li>
答案 2 :(得分:0)
替代方式,尝试&#39; Laravel Collective&#39; Html助手。
<强> HTML 强>
{!! Form::open('delete',
'method' => 'delete,
'route' => ['show.destroy', $comment->id]
) !!}
{!! Form::submit('Submit') !!}
{!! Form::close() !!}
<强> routes.php文件强>
Route::delete('show/{show}', [
'uses' => 'TestController@destroy',
'as' => 'show.destroy'
]);
答案 3 :(得分:0)
试试这个:
带有方法的表单不显示,您可以使用 POST/PUT/DELETE 方法调用路由/url ...
<a href="{{ route('logout') }}" class="dropdown-item" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">Logout</a>
<form id="logout-form" action="{{ route('item/delete',) }}" method="POST" style="display: none;">
@csrf
</form>