[英]Is there a way to save values besides in the DataBase with Laravel 5.5?
我正在尝试一些疯狂的事情。 问题是我需要在变量上保存董事会编号(实际董事会是XXXVI,但今年将更改为XXXVII)值,因为我认为只是为了保存值而制作表格是没有用的这将每 2 年改变一次。 所以我想到在控制器上使用全局变量来保存该值,并且我的代码一切顺利,除了它没有将值保存到变量中。 这是我的代码:
控制器代码:
//Here I declare the variable
protected $board;
// Here I initialize the variable so I can send it to the template
public function editDirectors()
{
$numberBoard = $this->board;
return view('board.edit_directors', compact('numberBoard'));
}
//Here it's supposed to save the value into the variable
public function uploadNumber(Request $request)
{
$this->board = $request->value;
$numberBoard = $this->board;
return $numberBoard;
}
模板代码:
<a href="#" id="board-number" data-type="text"
data-pk="1"
data-url="{{url('/board-of-directors/edit/number-board')}}"
data-value="{{$numberBoard}}"
data-name="numberBoard"
data-title="Number Board">{{$nummberBoard}}</a>
Board of Directors</h3>
X-可编辑初始化
$('#board-number').editable();
路线
Route::put('/board-of-directors/edit/number-board' , 'DirectorController@uploadNumber');
有趣的是,当我显示 Web 控制台以检查网络选项卡并检查 XHR 部分时,它发送一个 200 响应,并且在预览中,它返回我输入的值,但它没有将该值保存到变量中。
将非常感谢您的帮助:3
编辑:
我创建了一个 config/board.php 文件并添加了以下几行:
return [
'director' => [
'number' => 'XXXVI'
]
];
用这个修改了控制器:
// Here I get the value at config/board.php and send it to the template and works :D
public function editDirectors()
{
$numberBoard = Config::get('board.director.number');
return view('board.edit_directors', compact('numberBoard'));
}
//Here it's supposed to save the new value into the config/board.php file but doesn't works :(
public function uploadNumber(Request $request)
{
$numberBoard = $request->value;
Config::set('board.director.number', $numberBoard);
return $numberBoard;
}
我运行此命令以便 config/board.php 可以将值发送到控制器。
php artisan config:cache
此外,每次我更改 config/board.php 中的值时,似乎我必须运行此命令以使其显示该值。
你有什么想法可以建议吗? 真的很感激:3
您可以将其保存在 config 或 .env 文件中。
在.env
定义
DirectorNumber=XXVII
在应用程序控制器中访问
protected $board;
function __construct($board)
{
$this->$board = env('DirectorNumber');
}
否则,您可以将其保存在配置文件中
config/board.php
写入<?php return ['count' => 'XXVII'];
config('board.count')
访问变量编辑:如果config:cache
laravel 不选择更新的 env 变量,那么重新运行config:cache
或config:clear
(它将开始恢复应用程序中的 env 值)
解决方案
我认为我所做的是一个不好的做法,但它解决了我的问题。
摘自: How to set .env values in laravel in the fly
首先我在我的 .env 文件中添加了这个:
BOARD_NUMBER = XXXVI
然后我在控制器中更新了我的代码:
//Here I get the value form the BOARD_NUMBER at .env and send it to the template
public function editDirectors()
{
$numberBoard = env('BOARD_NUMBER');
return view('board.edit_directors', compact('directors', 'numberBoard'));
}
//Here I open the .env and rewrite the BOARD_NUMBER value
protected function uploadNumber(Request $request)
{
$numberBoard = $request->value;
$envFile = app()->environmentFilePath();
$str = file_get_contents($envFile);
$oldValue = env('BOARD_NUMBER');
$str = str_replace("BOARD_NUMBER={$oldValue}", "BOARD_NUMBER={$numberBoard}\n", $str);
$fp = fopen($envFile, 'w');
fwrite($fp, $str);
fclose($fp);
}
在我采用解决方案的同一个链接中,还有另一个解决方案,其中命令“php artisan config:cache”运行,但我怀疑它对我有用,因为我正在将 Web 应用程序上传到共享主机。
希望这有助于其他:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.