![](/img/trans.png)
[英]Passing variable value from one controller to another controller laravel
[英]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.