How to use shared variable in Laravel PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class xyzController extends Controller
{
public $a;
public function index (Request $request){
$input =Request ::all();
print_r($input);
$this->a =$input;
return view ('page_name', compact('array_name'));
}
public function abc (){
print_r($this->a);
}
} |
我在 Laravel 中的代码如下所示。它不工作。我想在函数 abc() 中使用一些变量,该变量在函数 index() 中初始化。这里变量 $a 是公共类型并在函数 index() 中初始化为
$this->a =$input; 并在函数 abc() 中作为 print_r($this->a); 访问它
我无法在函数 abc() 中调用函数 index(),因为它返回到其他一些页面,而函数 abc 也返回到与 index() 不同的其他一些页面。
谁能纠正我在访问函数 abc() 中的变量 $a 时出错的地方,或者可以建议我在不使用全局变量的情况下访问函数中的 $a 的更好方法?
- 我认为这应该是 $request::all()
-
不,即使我的问题是访问变量,它也能正常工作。你可以初始化 $input 任何东西说 $input ="Hello World"。
-
您如何访问 abc()?
-
此函数由已在 route.php 中路由的其他页面使用。问题是如何在函数 abc() 中访问这个变量?
-
为什么不使用它作为参数?
-
不能用作参数,因为函数 abc() 也不会在函数 index() 中调用,因为函数 abc() 直接在 route.php 中路由,并且 index 也被路由用于两个不同的功能。
-
重定向时,只需将其作为参数传递给刀片。
-
你能写出语法吗?
-
你能告诉我关于你的问题的html和另一个后端吗?
-
Route.php 就像- Route::get('index', xyzController@index);路线::get('index', xyzController@abc);我的控制器已经是你知道的,并且需要任何 html 或视图,因为它已经通过路由重定向。
-
尝试在您的函数 abc 中添加 exit;。那有什么回报吗?
-
那么你想通过你的观点吗?
-
不,我只想在 abc 函数中传递这个变量,在这里我可以简单地打印为 print_r($var);那就是你也可以看到我的代码。
-
然后是 $var = $this->a; 最后是 print_r($var);
-
已经完成了兄弟..它不起作用这是我问的问题。
-
尝试将其设为静态:public static $a; 然后 $test = self::$a
-
然后告诉我如何在索引函数中初始化 $a,然后在函数 abc 中使用这个变量。
-
也一样 self::$a = $input;
-
它也不起作用。
-
您可以在 index 函数中打印 $index 变量值而不会出现任何错误吗?
-
是的..我可以做到这一点。
这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class xyzController extends Controller
{
public function index (Request $request){
$input =Request ::all();
session ()->put('requestData',$input);
print_r($input);
return view ('page_name', compact('array_name'));
}
public function abc (){
print_r(session ('requestData'));
}
} |
- 这种方法的问题(虽然是功能性的)是为了测试目的,您将依赖 Request 类,就像您使用依赖注入并注入 Request 对象一样,然后您可以使用它测试您的控制器。
-
是的,对于我的情况来说,这样做并不是一个好主意,因为我在索引函数本身中接受的所有请求并且它有许多针对不同条件的条件语句,以便在不同的页面中重定向。所以你能告诉我做同样动作的更好方法吗?
-
@BaidyanathPrasad 您应该为此使用会话。
-
你能写出更多关于会话语法的内容吗?
-
@BaidyanathPrasad 如果您希望在访问 abc 函数后数据消失,只需在 abc 函数 session->forget('requestData'); 中的 print 语句后多放一行
-
即使我在中间件中有路由,它也会显示以下错误。致命错误:调用未定义的方法 Illuminate\\\\\\\\Support\\\\\\\\Facades\\\\
equest::all()
-
仍然是错误类 App\\\\\\\\Http\\\\\\\\Controllers\\\\\\\\Illuminate\\\\\\\\Http\\\\
equest 不存在我已经在使用这个使用请求;所以我不认为这是问题所在。
-
不完全相同的错误,我在上面的评论中写了错误。
-
@BaidyanathPrasad 你能在课前写下你的使用语句和命名空间吗?
-
@RohitKhatri,我再次重复我的问题,我想在一个类中使用一个变量,该变量将在一个函数中初始化并在另一个函数中打印它们的值。在 c 中这真的很容易,但我怎么能在 php 中做同样的事情呢?
-
这是我在 class:: \\'namespace App\\\\\\\\Http\\\\\\\\Controllers; 之前的所有命名空间和使用语句使用 Illuminate\\\\\\\\Support\\\\\\\\Facades\\\\\\\\Input;使用 App\\\\\\\\Http\\\\\\\\Controllers\\\\\\\\Controller;使用 App\\\\\\\\Category;使用数据库;使用请求;使用视图;\\'
-
请将此 use Request; 替换为 use Illuminate\\Http\
equest;。如果只想知道如何使用一个函数中分配的变量,在其他函数中你不需要访问请求。您必须先解决您的请求问题,这里是请求的参考:laravel.com/docs/5.2/requests
-
@BaidyanathPrasad 在解决方案之前您可以在哪里访问 Request::all() ?
-
这是在索引函数中,我想在 abc 函数中使用这个值,正如您在页面顶部的问题陈述中看到的那样。
-
@BaidyanathPrasad 您是否将 use Request; 替换为 use Illuminate\\Http\
equest; ?
-
当我替换它时,它会运行,但它不能接受输入,并且会显示为什么我喜欢这个错误。
-
@BaidyanathPrasad 我已经更新了答案,现在试试这个,但在此之前,只需从我之前的解决方案中删除您添加的所有内容并将您的代码恢复到您的状态。
-
@RohitKhatri 这是我最初遇到的问题,当我调用函数 abc() 时它不显示任何内容,我知道它应该打印与索引函数打印相同的内容。这是实际问题..你能解决它吗?
-
@BaidyanathPrasad 那么在这种情况下,我需要访问您的机器,或者您可以将您的代码放在您的任何服务器上并授予我访问权限。
-
对不起兄弟,我正在为一些私人公司做现场项目。我不能分享我的整个代码或机器..但真的很感谢,我很感激你的帮助。但是我也在努力解决这个问题,希望我能找到解决方案,我现在会让你解决这个问题。再次感谢。
-
@BaidyanathPrasad 我可以让您访问安装了 laravel 的机器,并且您可以针对您的问题键入虚拟代码。我将能够修复。
-
@BaidyanathPrasad 你没有Skype吗?
-
是的,我有我们可以在那里聊天,只是因为视频通话在 ubuntu 上不起作用。
-
没关系,这是我的 Skype 名称 developer.rohitkhatri
-
@RohitKhatri,问题已解决,问题出在 laravel 版本中。由于我使用的是 laravel 5.2,所以在这个版本中,当您使用 cookie 时,像这样的会话请求您必须在中间件路由中路由所有内容,否则它将返回 null 值而不会出现任何错误。
-
@BaidyanathPrasad 哦,明白了。