【问题标题】:Passing parameter from route to controller in laravel将参数从路由传递到laravel中的控制器
【发布时间】:2017-05-14 13:16:25
【问题描述】:

我正在尝试将变量从路由传递到控制器。但无法成功。

我的路线条目如下

Route::get('/Register', 'NewRegister@CheckCand');

现在我想在控制器文件中获取一个参数。我的控制器功能如下

public function CheckCand()
{
    echo $ID;
}

现在我如何将变量 ID 从路由传递到控制器。但我不想在 URL 和 get 函数中传递它,我不想更改“/注册”。

Route::get('/Register', 'NewRegister@CheckCand');

意味着它就像从路由传递到控制器的隐藏参数。 可能是问题令人困惑,但我不知道如何更好地解释。

【问题讨论】:

  • 这是一个GET路由,因此所有路由参数都应该在URL中传递
  • 好的。但是有没有其他方法可以将参数从路由传递到控制器。当我单击网页上的链接时,它将转到路由并从路由调用控制器,其参数未在 URL 中定义。

标签: laravel-5


【解决方案1】:

作为请求参数传递并使用请求在控制器中检索它。如下所示。

jQuery

$.get('/register', {ID :'123'}, function(data) {});

Javascript

<a href="{{ url('register') }}" onclick="event.preventDefault(); document.getElementById('register-form').submit();">...</a>
<form id="register-form" action="{{ url('register') }}" method="GET" style="display: none;"><input type="hidden" name="ID" value="..."/></form>

控制器

public function CheckCand(Request $request) {
    $request->ID;
}

【讨论】:

  • 我在点击超链接时调用 CheckCand() 函数。那么我应该如何在路由文件中调用这个 jquery。
  • 尝试将 id 作为参数添加到 url。喜欢href="/register?ID=123"
  • 这就是我要问的。我不想在 URL 中传递参数。
  • @Kash 抱歉忘记了最初的问题。您不能在 route 文件中编写 jquery 调用。这是一个前端。我更新了问题以包含 javascript 方式。检查这是否对您有帮助
【解决方案2】:

您可以通过Request 检索参数,因此在您的函数中请求您在传递参数时命名的参数

public function CheckCand(){

$request = Request::all();
$ID = $request->ID ;
// Or
$ID = $request['ID'];
}

【讨论】:

  • 请求参数很好,但是如何从路由传递到控制器。
  • 您将它们作为ParametersKey s 和Value s 通过您的JS 代码传递,因此您不必在route 文件中添加@Kash
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 2019-07-10
  • 2019-06-18
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多