简体   繁体   English

如何在两个控制器之间传递数据?

[英]How I can pass the data between two controllers?

First controller is this DataFormController首先controller就是这个DataFormController

class DataFormController extends \App\Http\Controllers\Controller
{
    public function getDataForm(Request $request) {
      $model = $request->model;
      $uuid = $request->uuid;
       //some codes
             return response()->json(['status' => 'success',
       'settings' => $settings, 'form' => $form, 
       'relations' => $relations, 'values' => $values, 
       'dates' => $dates, 'actions' => $actions, 
       'translations' => $translations, 'count' => $count, 
       'max' => $limitationMax, 'limitReached' => $limitReached,
      ], 
        200);
}

I want to pass data values from DataFormController to another controller PointController我想将数据值从 DataFormController 传递到另一个 controller PointController

class PointController extends Controller {

  public function newTransaction(Request $request){
   //Some codes
}
}

How can i solve this problem我怎么解决这个问题

use App\Http\Controllers\PointController;

class DataFormController extends Controller
{
    public function getDataForm(Request $request) {
      $model = $request->model;
      $uuid = $request->uuid;
       //some codes
      $response = ['status' => 'success',
                'settings' => $settings, 'form' => $form, 
                'relations' => $relations, 'values' => $values, 
                'dates' => $dates, 'actions' => $actions, 
                'translations' => $translations, 'count' => $count, 
                'max' => $limitationMax, 'limitReached' => $limitReached];

        $transactionReq = new Request($response);
        
        /**
         * if you declared the newTransaction as static you
         * can call that function as below 
         */
        PointController::newTransactionStatic($transactionReq);

        /**
         * If the function is not static
         */
        $pointController = new PointController();
        $pointController->newTransactionNonStatic($transactionReq);



        return response()->json($response,200);
}

You can declare the functions as static or non static as you desire, if you want to get the request in pointcontroller:如果您想在 pointcontroller 中获取请求,您可以根据需要将函数声明为 static 或非 static:

class PointController extends Controller {

    /**
     * NON STATIC FUNCTION
     *
     * @param Request $request
     * @return void
     */
    public function newTransactionNonStatic(Request $request){
    //Some codes
    }

    /**
     * STATIC FUNCTION
     *
     * @param array $request
     * @return void
     */
    public static function newTransactionStatic(Request $request){
    //Some codes
    }
}

If you want to get the "dates","count","values" from DataFormController:如果您想从 DataFormController 获取“日期”、“计数”、“值”:

         $pointsData = \Arr::only($response,['dates','count','values']);
        /**
         * if you declared the newTransaction as static you
         * can call that function as below 
         */
        PointController::newTransactionStatic($pointsData);

        /**
         * If the function is not static
         */
        $pointController = new PointController();
        $pointController->newTransactionNonStatic($pointsData);

Since we are passing the values as array change it accordingly in the point controller由于我们将值作为数组传递,因此在点 controller 中相应地更改它

 class PointController extends Controller {

    /**
     * NON STATIC FUNCTION
     *
     * @param array $request
     * @return void
     */
    public function newTransactionNonStatic(array $request){
       $dates = $request['dates'];
       $count = $request['count'];
       $values = $request['values'];
       /**
        * Or for easier way call the extract php function
        * eg : extract($request);
        * then easily use the array keys as variables  
        *  -> $dates, $count, $values etc.
        */

    }

    /**
     * STATIC FUNCTION
     *
     * @param Request $request
     * @return void
     */
    public static function newTransactionStatic(array $request){
       $dates = $request['dates'];
       $count = $request['count'];
       $values = $request['values'];
       /**
        * Or for easier way call the extract php function
        * eg : extract($request);
        * then easily use the array keys as variables  
        *  -> $dates, $count, $values etc.
        */
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM