【问题标题】:How to make a variable accessable to the whole controller in laravel如何使变量在 laravel 中可供整个控制器访问
【发布时间】:2017-07-12 15:23:42
【问题描述】:

假设我有一个

索引控制器

其中包含一个函数

public function store($store)
{
    $store = (query)->get();
    return $store;
}

现在我希望 store 中的一列可供所有函数访问,例如

$id = $store->id

我希望它可以像这样使用

public function abv()
{
    $categories = (query)->where('id','=',$id)->get();
}

我的意思是它成为整个控制器的全局变量。我如何做到这一点?

【问题讨论】:

标签: php laravel laravel-5 laravel-5.3


【解决方案1】:

您可以在控制器的构造函数中将此值设置为私有属性。

class MyController {
    private $id;

    public function __construct() {
        $this->id = (query)->get();
    }

    // More controller functions
}

现在您的控制器中的任何函数都可以使用$this->id 调用此属性。

【讨论】:

  • 如何将变量传递给 __construct?
  • 通常你应该在创建对象时这样做。然而,据我所知,使用 Laravel 控制器这是不可能的。也许通过注射。
【解决方案2】:

我不确定这是否是您想要的,但您可以在 Controller protected $id 中声明一个受保护或公共变量,然后当您调用 store 时

public function store($store)
{
   $store = (query)->get();
   $this->id = $store->id;
   return $store;
}

并在其他功能中使用:

public function abv()
{
  $categories = (query)->where('id','=',$this->id)->get();
}

但这仅适用于相同的 Controller 实例,如果您创建 Controller 的新实例,则在调用 store 方法之前不会设置变量 $id。

【讨论】:

  • 这看起来很简单,无需更改大部分代码!
猜你喜欢
  • 2017-09-22
  • 2015-12-05
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2012-06-26
  • 1970-01-01
  • 2019-11-30
相关资源
最近更新 更多