href链接中的laravel方法?

Posted

技术标签:

【中文标题】href链接中的laravel方法?【英文标题】:laravel method in href link? 【发布时间】:2016-07-01 00:41:57 【问题描述】:

我想创建一个包含两个链接的下拉菜单。 “删除”和“编辑”链接。

我为删除功能创建了一个表单。

                        !! 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');

但这对我没有用..

所有/show/路线:

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 

【问题讨论】:

为什么不链接到使用TestController@destroythread的路由? @JilsonThomas 请查看我的更新 :) 你用的是哪个版本的 laravel? 我现在正在使用 Laravel 5 在你的路由中,定义这个:Route::delete('/show/id', ['as'=&gt;'destroy', 'uses'=&gt;'Test\\TestController@destroy']);,在href中,使用:&lt;li&gt;&lt;a href=" route('destroy', $comment-&gt;id) "&gt;Delete&lt;/a&gt;&lt;/li&gt; 【参考方案1】:

Laravel 使用方法欺骗来执行 'DELETE'、'PUT'、'PATCH' 表单请求。就像@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(...)。以前的方法是将表单发布到路线。此外,将整个表单包装在锚标记中是无效标记。

【讨论】:

我会更新我的问题,请在大约一分钟后查看它:) 您是否在 Route::delete(...) 之前定义了将发布到 '/show/id' 的任何路由?我只是想知道您的 routes.php 中是否有冲突 是的,我有,我会用我拥有的所有 /show 路线更新我的问题 :) 你能通过 chrome web inspector 或 fiddler 检查网络请求吗?它是显示正在发送的实际 POST (DELETE) 请求还是 GET 请求? 这是一个删除请求...在下拉菜单之前,我有一个删除按钮,它工作得很好。所以我认为它需要删除请求【参考方案2】:

因此,根据 cmets 中的讨论,您必须使用 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>

【讨论】:

我应该把这个 ajax 代码放在哪里? &lt;li&gt;&lt;a href=" route('destroythread', $comment-&gt;id) "&gt;Delete&lt;/a&gt;&lt;/li&gt;这就是我的下拉删除菜单现在的样子 对不起,我昨天遇到了一些网络问题。我现在试试这个【参考方案3】:

另一种方式,尝试'Laravel Collective' html Helper。

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'
]);

【讨论】:

好吧,但这是一个提交按钮。我知道做普通按钮的方法,但我不想在下拉菜单中包含删除部分。【参考方案4】:

试试这个:

带有方法的表单不显示,您可以使用 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>

【讨论】:

以上是关于href链接中的laravel方法?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 组件中的 Laravel 路由链接?

附加到 Laravel 中的分页链接 URL

共享主机中的 Laravel 存储链接

在 laravel 中链接 2 个数据集的最有效方法

如何从 laravel 刀片中的 json 数据创建分页链接

模型未链接到 laravel php 中的表