在通过控制器的某些视图中包含不同的变量

时间:2019-01-18 11:34:27

标签: php laravel laravel-blade

我是 Laravel 的新手,并且已经开始了我的第一个项目(使用Laravel 5.7)。
我想在每个视图中使用一些变量。

通常,我会创建一个config.php文件,在其中放置变量并在每个页面中使用它们(显然在所有页面中都包含config.php)。

但是,使用 Laravel ,我可以在哪里放置这些变量?
我该如何在所有视图中使用它们?

这是我的 web.php

=IFERROR(CHOOSE(F7,"Acve","Red","Se","InvO","PO","Susactive","Suspense Other","Del","I223","Penng","PEO Cond","Invesyed"), " ")

TaskController 中:

Route::get('/task','TaskController@index');
Route::get('/task/insert','TaskController@setInsertTask');
Route::get('/task/list','TaskController@getTaskList');

现在我已经尝试将变量像这样放置在 TaskController 中:

class TaskController extends Controller
{
    public function index(){
        return view('task.index');
    }

    public function setInsertTask(){
        return view('task.insert');
    }

   public function getTaskList(){
        return view('task.list');
    }
}

视图中,我插入了以下内容:

class TicketController extends Controller
{
    private $titlePage1 = "Task manager";
    private $titlePage2 = "Task manager insert";

    public function index(){
        return view('task.index',[
        'titlePage' => $this->titlePage1
    ]);
    }

    public function setInsertTask(){
    return view('task.insert',[
        'titlePage' => $this->titlePage2
    ]);
    }

   public function getTaskList(){
    return view('task.list',[
        'titlePage' => $this->titlePage1
    ]);
    }
}

但是我认为这不是最好的解决方案,我也不喜欢它。

在此项目中,由于以下原因,我想使用此变量:
1。。我想管理三个相互关联的不同软件(例如,用户登录,管理员登录,技术人员登录),因为它们具有相同的数据库,并且单个区域很小。因此,我想为每个区域打印不同的标题。

2。。页面中有一些静态单词,因此我将创建一个包含所有单词的数组,以使所有静态单词居中。

3。。与标题页一样,我希望菜单具有相同的功能。在php中(不在html中)在单个文件中管理不同区域的不同菜单。

4。。我想在其他控制器中使用相同的变量。

我进行了很多搜索,但是找不到在某些视图中包含通用变量的最佳实践。

谁能帮我?非常感谢。

3 个答案:

答案 0 :(得分:1)

是的,您可以使用.env中定义的变量

例如.env

name=test

您可以将其作为env('name')

获得

read here

答案 1 :(得分:1)

您可以使用 BaseController

class BaseController extends Controller
{
  public function __construct()
  {
  $titlePage1 = "Task manager";
  $titlePage2 = "Task manager insert";

  View::share(['titlePage1' => $titlePage1, 'titlePage2' => $titlePage2 ]);
 }
}

您可以在任何视图{{$titlePage1}}{{$titlePage2}}中访问它

您还可以使用AppServiceProvider执行相同的操作 在boot()的{​​{1}}中,添加以下代码。

AppServiceProvider

答案 2 :(得分:1)

您可以与View::share中的AppServiceProvider共享所有视图的变量

我回答了另一个问题。有关详细信息,请访问:link