我有一个函数,它接受一个字符串,并将其转换为Mac地址格式。
function mac_adress($str){
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
我希望传递函数到我的视图,所以我可以像这样调用它
$str = 836997595163;
{!!mac_adress($str)!!} //83:69:97:59:51:63
我有多个视图需要这个功能,我试图避免将它们放在我的每个刀片文件中。
我怎样才能做到这一点 ?
它甚至可能吗?
这可能是helper
的一个很好的候选者,取决于你真正需要整个网站的功能。
创建一个helpers.php文件
<?php
function mac_adress($str){
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
然后在composer.json
中自动加载它
{
"autoload": {
"files": [
"app/helpers.php"
]
}
}
然后在您的终端中运行composer dump-autoload
,您的帮助程序方法将在整个应用程序中可用。这样做,您可以根据需要向helpers.php
添加更多辅助函数。
您可以将其设置为会话变量,并将其调用多次,并且需要许多地方
$_SESSION['mac-address'] = mac_address($str);
更多信息,请访问$_SESSION
您也可以使用laravel会话库qazxsw poi
另一种干净的方法是通过扩展刀片(利用@ dtj的答案):
创建一个helpers.php文件:
Laravel Session
编辑您的composer.json文件:
// app/helpers.php
function macAddress($str) {
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
运行{
"autoload": {
"files": [
"app/helpers.php"
]
}
}
在AppServiceProvider中:
composer dump-autoload
然后在你的意见:
// app/Providers/AppServiceProvider.php
public function boot()
{
Blade::directive('mac', function($expression) {
return "<?php echo macAddress{$expression}; ?>";
});
}
这样您就可以随时修改辅助函数并对其进行单一引用。
将其导出到服务类,您可以从每个视图轻松调用它
@mac('836997595163')
<?php $formatedMacAddress = \App\Services\MacAddressHelper::formatMacAdress($macAddress);?>
<div>{{ $formatedMacAddress }}</div>