如何在同一控制器中将变量从一个函数传递到另一个函数?

How to Pass a variable from one function to an other in the same Controller?

提问人:MOHAMED KESSOUM 提问时间:9/27/2023 最后编辑:matiaslauritiMOHAMED KESSOUM 更新时间:9/28/2023 访问量:58

问:

我的控制器中有两种方法。

方法一

public function search(Request $request)
{
    $search_text = $_GET['search'];
}

此方法通过变量获取在搜索栏输入中输入的值。$search_text

我在这里的目标是在另一种方法中使用该变量。

方法二

public function searchFilter(Request $request)
{
    $brand = $request->marque;
    $disponible = $request->disponibilite;
    $souscat = $request->sous_categorie;
}

我尝试使用该会话,但没有工作。__construct

Laravel 方法 控制器

评论

0赞 matiaslauriti 9/27/2023
您的问题是您正在尝试重用与路由相关的控制器方法。在 Laravel 中你不会这样做,你必须创建一个 NO 路由正在使用的 or 方法(你也可以使用),仅此而已,一个与 Laravel 无关的普通 PHP 调用。还要记住,您使用的是(全局变量),而 Laravel 使用(如果它是类)或帮助程序,但不使用全局变量。查看此文档protectedprivatepublic$_GET$requestRequestrequest()
0赞 MOHAMED KESSOUM 9/27/2023
嗯,如果您确实了解这个问题,有没有办法实现我想要实现的目标?
0赞 matiaslauriti 9/27/2023
你不明白我的回答,我告诉你你可以,创建另一个在路由中不使用的方法,就像一个普通的PHP类。这是基本的PHP,老实说与Laravel无关。即使是 Laravel,你也无法理解如何调用另一个方法,即 PHP 而不是 Laravel。但同样,创建另一个方法,并将该方法称为基本 PHP。您需要这方面的帮助吗?
0赞 MOHAMED KESSOUM 9/27/2023
是的,我需要帮助
1赞 Mr. Kenneth 9/28/2023
在回答之前,您如何使用这些控制器?他们是否使用不同的路由请求?或者只有方法被请求访问,那么你想从中执行方法?GET/POSTsearchsearchFiltersearch

答:

0赞 Daniel Ballesteros 9/27/2023 #1

我不知道为什么你需要两种方法,我认为你是作为帖子请求或类似的东西调用的,并且在你的查询字符串中你有属性,所以你可以使用来获取你的 url 中的所有值,你只需要调用来自路由参数的实际属性: https://laravel.com/docs/10.x/requests#retrieving-input-via-dynamic-propertiessearchFiltersearch$request

或者,甚至可以使用此方法来获取该属性的值。$request->query('search')

评论

0赞 MOHAMED KESSOUM 9/28/2023
该方法正在检索我的输入,并根据这些输入我想在方法中过滤。searchsearchFilter
0赞 MOHAMED KESSOUM 9/28/2023 #2

我发现我使用了会话

My First Method:

public function search(Request $request)
{
$search_text = $_GET['search'];
session()->put('search_text', $search_text);
}

我的第二种方法

public function searchFilter(Request $request)
{
    $search_text = session()->get('search_text');
    dd($search_text);
}

输出

what ever The searched value was