【问题标题】:Accessing href parameters in laravel在 laravel 中访问 href 参数
【发布时间】:2017-05-29 02:39:27
【问题描述】:

如何将 $_GET 替换为 Laravel 的。我正在尝试访问此 href 参数。我知道在标准 PHP 中,您执行 $_GET 请求,然后执行 SQL 删除查询语句。在 Laravel 中更难,因为它涉及控制器/路由。我在 ProjectsController 中有一条销毁路线。以下链接是我将鼠标悬停在链接上时显示的内容。我用 Jquery 获得了 id 并通过了它,但问题是我希望它在单击此链接时从数据库中删除项目。

<a href="projects/delete=31"> delete</a>

控制器:

<?php

namespace App\Http\Controllers;

use App\project;
use App\Http\Requests;
use Illuminate\Http\Request;
use Session;

class ProjectsController extends Controller
{



    public function destroy($id){


        $project = Project::find($id);

        $request->input('delete'); 

        $project->delete();

        Session::flash('success', 'The project was successfully deleted!');

        return redirect()->route('projects.show', $project->project_id);

    }

}

【问题讨论】:

  • $id = Input::get('delete')
  • 快速提问,即使我在下面提交了答案。你想达到什么目的,&lt;a href="projects?delete=31"&gt;delete&lt;/a&gt;&lt;a href="projects/delete/31"&gt;delete&lt;/a&gt;
  • @Gayan 它由 Buglinjo 和 delete 修复
  • @steven 很高兴听到。我用两种方法修改了我的答案以防万一:)

标签: php laravel parameters href


【解决方案1】:

试试这个:

Route::get('projects/delete/{id}', 'ProjectsController@destroy')->where('id', '[0-9]+');

并更新您的 href:

<a href="projects/delete/31"> delete</a>

它会像这样工作。您也可以删除该行:$request-&gt;input('delete');

【讨论】:

  • 您好,我知道 ?对不起。我已将此添加到我的路线销毁中,并且什么也不做。我已经添加了我的控制器文件。
  • 你能编辑你的帖子并添加你的视图、路由和控制器吗?
  • 我已经添加了我的路由和控制器。
  • 我将把它放在哪里 -> Route::get('projects/delete/{id}', 'ProjectsController@destroy')->where('id', '[0-9] +');
【解决方案2】:

改变

<a href="projects/delete=31">delete</a> // this is wrong

接近 01

<a href="projects?delete=31">delete</a>

将您的路线设置为

Route::get('projects', 'ProjectsController@destroy');

像这样设置你的 ProjectsController

class ProjectsController
{
    public function destroy()
    {
        $delete = request()->get('delete');
    }
}

接近 02

<a href="projects/delete/31">delete</a>

将您的路线设置为

Route::get('projects/{id}', 'ProjectsController@destroy');

像这样设置你的 ProjectsController

class ProjectsController
{
    public function destroy($id) // $id = 31
    {
        // your code
    }
}

请参阅 routingcontrollers 以了解它们。

【讨论】:

  • 伙计,你在这里复制粘贴了两次答案。不要那样做。
【解决方案3】:

将链接改为:

<a href="/projects?delete=31"> delete</a>

确保路线如下所示:

Route::get('projects', ....

然后,您将可以在控制器、模型等中使用request('delete') 访问此参数。

【讨论】:

  • 使用 request() 助手而不是 $request 变量。或者对象Request方法中的对象destroy (Request $request)
  • 这里很困惑抱歉。如果你能操作我上面的代码,那我可能会理解。
【解决方案4】:

也许你可以这样尝试

<a href="{{ asset('projects/delete/{id}') }}">delete</a>

并设置路线

Route::get('/projects/delete/{id}', 'ProjectsController@delete');

关于ProjectsController中的删除功能

public function delete($id)
{
    $projects = projects::find($id);
    $projects->delete();
    return redirect('/yourEditPage');
}

希望对你有帮助!

【讨论】:

    【解决方案5】:

    其他答案涵盖了如何通过路由访问 get 参数,这确实回答了您的原始问题。

    但是,我建议您在删除内容时遵循 restful 模式(使用 DELETE 方法)。在 laravel 中这很简单。

    路线

    Route::delete('projects/{project}', 'ProjectsController@destroy')->name('projects.destroy');
    

    控制器方法

    public function destroy(Project $project) {
        $project->delete();
        Session::flash('success', 'The project was successfully deleted!');
        return redirect()->route('projects.index');
    }
    

    模板

    <form action="{{route('projects.destroy', ['project' => $project->id])}}" method="POST">
    {{method_field('DELETE')}}
    {{csrf_field()}}
    
    <button type="submit">Delete</button>
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 2019-04-21
      • 2015-08-21
      • 2023-03-31
      • 2017-03-06
      • 2015-01-16
      • 2018-09-07
      • 2021-10-28
      相关资源
      最近更新 更多