我是 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。。我想在其他控制器中使用相同的变量。
我进行了很多搜索,但是找不到在某些视图中包含通用变量的最佳实践。
谁能帮我?非常感谢。
答案 0 :(得分:1)
答案 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