【问题标题】:How to pass an array value from a method to another method in Laravel?如何将数组值从一个方法传递给 Laravel 中的另一个方法?
【发布时间】:2016-06-13 18:26:19
【问题描述】:

我正在尝试将数组的值从一种方法传递到 Laravel 中的另一种方法。基本上我有一个名为 orderingSubmission 的方法,它从 Ajax POST 执行中接收一个数组(该部分工作正常),但是我试图将数组值传递给另一个名为 orderingSubmissionReceipt 所以我终于可以在订单摘要页面上呈现视图了。我正在使用会话,但它们似乎不起作用。谁能告诉我我错过了什么?

这是我的 route.php

Route::get('/', function() { return redirect('home'); });
Route::get('home', 'HomeController@home');
Route::post('home', 'HomeController@activateCustomer');
Route::post('order-summary', 'HomeController@OrderingSubmission');
Route::get('order-summary', 'HomeController@orderingSubmissionReceipt');

HomeController.php

public function orderingSubmission(Request $request)
{
    $allValues2 = $request->get('users'); // This code works fine. It gets the array
    Log::info('This is orderingSubmission.....: ' . print_r($allValues2, true));

   Session::set('allValues2',$allValues2);

}

public function orderingSubmissionReceipt()
{
    $allValues3 = Session::get('allValues2'); // This code is not getting the session value
    Log::info('This is orderingSubmissionReceipt.....: ' . print_r($allValues3, true));

    return view('order-summary', [
        'people' => $allValues3
    ]);
}

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    您可以使用 $request->session->put()$request->session->get() 如下:不要忘记添加 在 orderingSubmissionReceipt 中请求 $request 函数声明。

    public function orderingSubmission(Request $request)
    {
        $allValues2 = $request->get('users'); // This code works fine. It gets the array
        Log::info('This is orderingSubmission.....: ' . print_r($allValues2, true));
        $request->session()->put('allValues2',$allValues2);
    
    }
    
    public function orderingSubmissionReceipt(Request $request)
    {
    
        $allValues3 = $request->session()->get('allValues2'); // This code is not getting the session value
        Log::info('This is orderingSubmissionReceipt.....: ' . print_r($allValues3, true));
    
        return view('order-summary', [
            'people' => $allValues3
        ]);
    }
    

    【讨论】:

      【解决方案2】:

      你可以像这样创建类变量:

      class A
      {
      private $allValues2 = array();
      
          function orderingSubmission(Request $request)
          {
              $this->allValues2 = $request->get('users');
      
              //the rest of the code in this method..
          }
      
          function orderingSubmissionReceipt()
          {
              //if you want to make a local variable first, you can do it like this:
              $allValues3 = $this->allValues2;
              Log::info('This is orderingSubmissionReceipt.....: ' . print_r($allValues3, true));
      
              //or, you can just use the variable directly, like this:
              Log::info('This is orderingSubmissionReceipt.....: ' . print_r($this->allValues2, true));
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用session() 辅助方法以防Session 不起作用或显示任何错误。

        public function orderingSubmission(Request $request)
        {
            $allValues2 = $request->get('users');
            session()->set('allValues2', $allValues2);
            Log::info('Value set to session: ' . session()->get('allValues2')); 
        }
        
        public function orderingSubmissionReceipt()
        {
            Log::info('Value get from session: ' . session()->get('allValues2'));     
            $allValues3 = session()->get('allValues2');
        
            return view('order-summary', [
                'people' => $allValues3
            ]);
        }  
        

        【讨论】:

          【解决方案4】:

          你应该这样做:

          use Illuminate\Http\Request; //You probably already have that!
          
          public function orderingSubmission(Request $request)
          {
              $allValues2 = $request->get('users');
              $request->session()->put('allValues2', $allValues2);
              Log::info('Value set to session: ' . $request->session()->get('allValues2'));
          }
          
          public function orderingSubmissionReceipt(Request $request)
          {
              Log::info('Value get from session: ' . $request->session()->get('allValues2'));
              $allValues3 = $request->session()->get('allValues2');
          
              return view('order-summary', [
                  'people' => $allValues3
              ]);
          }
          

          更多:https://laravel.com/docs/5.1/session

          【讨论】:

          • 结果是一样的。
          • 或者我做错了。你会如何在我的代码中使用 $request->session()?
          • 刚刚编辑了答案。检查这是否可行!我已经用简单的变量进行了尝试,对我来说效果很好。如果这不起作用,请尝试将数组编码为 json,然后再将其放入数组中。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-15
          • 2016-12-21
          • 1970-01-01
          • 2019-03-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多