首页 > 解决方案 > 用于不同控制器的 laravel 公共变量

问题描述

我想设置一个公共变量,以便可以在不同的控制器中使用它。我试过这个,但没有成功。

class HomeController extends Controller
{
 public $TravelId;
public function __construct()
{
 $this->TravelId=0;
}
}

然后我在另一个控制器中使用了相同的变量

class HomeController extends Controller
{
public function index($cus_id)
{
    //unique key for each user
    $this->TravelId = $cus_id;
}
}

标签: phplaravellaravel-5laravel-5.6

解决方案


默认情况下,您的所有控制器都扩展App\Http\Controllers\Controller类,因此您可以在此类上添加一个属性并在所有控制器上访问它:

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    /**
     * Your static property
     */
    public static $travelId;
}

然后你可以在另一个控制器上访问它:

self::$travelId = $cus_id;

推荐阅读