繁体   English   中英

将变量的值从控制器传递到另一个控制器

[英]Passing variable's value from controller to another controller

我有两个独立的控制器,其是PostController用于返回输入值到刀片和APIController从数据库到刀片返回数据。 我尝试用SESSION传递变量,但仍然没有功能。 请帮忙。

Index.blade.php

<form class="form-inline" action="{{ action('PostController@index') }}" method="GET">
   <div class="form-group">
      <label class="mb-2 mr-sm-2 col-form-label">Date : </label>
         <input type="date" name="date" id="date" style="width:160px;" class="form-control mb-2 mr-sm-2" value="<?php if(isset($_GET['submit'])) echo $_GET['date']; else echo date('Y-m-d');?>">
   </div>
   <input type="submit" name="submit" class="btn btn-primary mb-2" value="Inquiry">
</form>

PostController.php

<?php
   namespace App\Http\Controllers;

   use Illuminate\Support\Facades\Input;
   use Session;

   class PostController extends Controller
   {
      public function index()
      {     
         $getDate = Input::get('date'); //trying to pass this to APIController for query
         $getCurrentDate = date('Y-m-d');

         Session::put('getDate', $getDate); //for example $getDate = '2019-01-01'

         return view('posts.index')->with('getCurrentDate', $getCurrentDate)->with('getDate', $getDate);
      }
   }

APIController.php

<?php    
   namespace App\Http\Controllers;

   use Illuminate\Support\Facades\DB;
   use Yajra\Datatables\Datatables;
   use Session;

   class APIController extends Controller
   {
      public function getQueries()
      {
         ini_set('memory_limit', '1024M');
         ini_set('max_execution_time', 300);

         $getInputDate = Session::get('getDate'); //don't get anything here

         //dd($getInputDate); //have tried dumping, it returns null

         $getCurrentDate = date('Y-m-d');

         if($getInputDate == NULL)
         {
            $query = DB::select(DB::raw("SELECT * FROM TABLE WHERE date = '$getCurrentDate'");

            return Datatables::of($query)->make(true); 
         }
         else 
         {
            $query = DB::select(DB::raw("SELECT * FROM TABLE WHERE date = '$getInputDate'");

            return Datatables::of($query)->make(true);
         }
      }
   }

Web.php

Route::get('/', 'PostController@index');  

Route::group(['middleware' => 'web'], function () {
    // Put routes in here
    Route::get('/json/getQueries', 'APIController@getQueries')->name('api.posts.index');
});

Api.php

Route::get('/json/getQueries', 'APIController@getQueries')->name('api.posts.index');

Route::group(['middleware' => 'web'], function () {
    // Put routes in here
    Route::get('/', 'PostController@index'); 
});

尝试将受影响的路由放入Web中间件组中,因此您应该在它们之间共享会话。

Route::group(['middleware' => 'web'], function () {
    // Put routes in here
});

如果我没记错的话,这种情况应该是针对api路由的,该路由要与网络路由共享会话。

在控制器中添加使用会话; 它会工作。

https://laravel.com/docs/5.2/session#adding-custom-session-drivers

//use Illuminate\Support\Facades\Session;  
 use Session;

我尝试了适用于我的相同概念。

暂无
暂无

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

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