【问题标题】:How to use value from blade input in Laravel controller?如何在 Laravel 控制器中使用刀片输入的值?
【发布时间】:2021-05-25 14:42:37
【问题描述】:

我有一个模型可以搜索我的数据库。工作正常。我有一个控制器,它获取这个模型的结果,并在一个路由中返回它。工作也很好。但是我想动态地进行这个数据库搜索,以便用户可以更改条件。为此,我尝试在我的模型 DB 搜索(工作)中使用一个变量,将其参数发送到控制器(工作),现在,我只需要做的是将我输入的值传递给这个控制器。 但我完全不知道该怎么做;

这是我的模型(用户);

public function dbtest($testValue)
{
    return DB::select("SELECT * FROM users WHERE name >= '$testValue'");
}

我的控制器:

public function returnJSON()
{
    $testValue = 170;
    $teste = new user();
    return view('historyAcess',['resultadoJSON'=>$teste->dbtest($testeValue)]);
}

路线:

Route::get('returnJSON', 'App\Http\Controllers\Controller@returnJSON', ['name' => 'returnJSON']);

我在刀片中需要做的就是从提交中获取值并将其发送到我的控制器“$testValue”。它可以通过路线或任何东西......

<form action="?????????" method="???????">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname"><br><br>
<input type="submit" value="Submit">

【问题讨论】:

  • 文档中有一个关于 HTTP 请求的Introductionaction 应该是你的路线,method 应该是 get。不要忘记csrf。顺便说一句,由于拼写错误,您的 returnJSON() 方法无法按预期工作

标签: laravel


【解决方案1】:

好的,所以,首先,你必须关闭form标签

如果你必须做一个 POST 请求 - 不是你的情况 - 有必要在表单标签的开头添加@csrf,这是为了安全,you can learn more here,你可以在 GET 方法上使用它,但不是必须的

然后在操作时,您必须将地址放置到您创建的路线中,您可以手动操作/returnJSON,或者,由于您附加了名称,您可以使用刀片助手{{ route('returnJSON') }},方法你必须把你写的方法放在路由上,在这种情况下是GET,所以它是&lt;form action="{{ route('returnJSON') }}" method="GET"&gt;

所以在您的控制器上,您将值设置为固定为 170,我想您想获取输入 fname 的值,所以您要做的是 $testValue = request('fname'); 您可以调试并查看确切地说,您从dd(request()-&gt;all()) 的请求中收到了什么

比你的观点historyAcess 你需要展示你刚刚得到的价值

基本就这些了,推荐你看系列Laravel 8 from scratch,它是免费的,可以帮助你理解 Laravel 的基本原理

【讨论】:

  • 看起来不错,但需要注意的是,对于GET 请求,您通常不需要@csrf,而且它会出现在请求?id=170&amp;_TOKEN=... 中,因此有点混乱。它不会伤害任何东西,但它是不必要的。
  • 完美答案。再好不过了。一切都像一个魅力。非常感谢!
  • @TimLewis 我不知道,谢谢你添加这个,我会编辑我的答案,以便清楚
  • @SpaceDogCS 没问题!编辑看起来很棒,如果可以的话,我会再次投票。干杯!
猜你喜欢
  • 2019-02-06
  • 1970-01-01
  • 2017-07-31
  • 2018-03-24
  • 2020-12-23
  • 1970-01-01
  • 2020-10-25
  • 2016-06-08
  • 2019-05-07
相关资源
最近更新 更多