Laravel 团队发布了 8.64,带有一个新的 @aware 刀片指令来访问父组件数据,另外还有 v8.x 分支中的最新变化。

🔥 Laravel 8.64.0 今天发布,支持新的“ @aware ” Blade 指令,允许子组件在需要时轻松访问父组件数据。

📚 查看文档中的示例:https ://t.co/QzoQ1juzxQ

— Taylor Otwell 🪐 (@taylorotwell) ,2021 年 10 月 12 日

@aware 刀片指令


新@aware指令可以让子组件在需要时轻松访问父组件数据:

<!-- Example usage -->
<x-menu color="purple">
    <x-menu.item>...</x-menu.item>
    <x-menu.item>...</x-menu.item>
</x-menu>

<!--
Implementation
/resources/views/components/menu/index.blade.php
-->

@props(['color' => 'gray'])

<ul {{ $attributes->merge(['class' => 'bg-'.$color.'-200']) }}>
    {{ $slot }}
</ul>


可以在 Laravel Blade 文档中了解更多关于访问父数据之信息。

Strip Tags Stringable 方法


Craig Anderson贡献了一个stripTags()用作Stringable 的方法,它使用 PHP的strip_tags()作为字符串链处理的一部分。如下:

Str::of('<strong>before<strong><br />after')->stripTags();

 

语言路径辅助函数


Rodolfo Ruiz贡献了一个lang_path()的helper函数,它能在 Laravel 项目的根目录查找lang目录,也可以在resources目录中查找:

// PROJECT_DIR/resources/lang or PROJECT_DIR/lang
$langPath = lang_path();

// PROJECT_DIR/resources/lang/es or PROJECT_DIR/lang/es
$langPath = lang_path('es');

// PROJECT_DIR/resources/lang/en or PROJECT_DIR/lang/en
$langPath = lang_path('en');
“throw if” HTTP 客户端方法


Ahmad Mayahi贡献了一个throwIf()方法,它接受一个布尔值,如果传递的值是true:

$response
    ->json()
    ->throwIf(App::isProduction);


集合“有任意”方法


Craig Anderson贡献了一个hasAny()的方法:如果集合包含任意传递的值,它将返回一个布尔值:

// returns `true`
collect(['first' => 'Hello', 'second' => 'World'])
    ->hasAny(['first', 'fourth']);

// returns `false`
collect(['first' => 'Hello', 'second' => 'World'])
    ->hasAny(['third', 'fourth']);


发布版说明


您可以在 GitHub 上查看下面的新功能和更新的完整列表以及8.63.0 和 8.64.0之间的差异。以下发行说明直接来自变更日志:

Laravel v8.64.0添加了如下特性:

  • 向集合添加了 reduceMany ( #39078 )
  • 添加Illuminate/Support/Stringable::stripTags()(#39098)
  • 添加Illuminate/Console/OutputStyle::getOutput()(#39099)
  • 添加了lang_path辅助功能 ( #39103 )
  • 添加了 @aware 刀片指令 ( #39100 )
  • 分派了新的 JobRetrying 事件 ( #39097 )
  • 在客户端响应中添加 throwIf 方法 ( #39148 )
  • 添加了 Illuminate/Collections/Collection::hasAny() ( #39155 )
  • 修复了 PHP 8.1 上没有前缀的路由组 ( #39115 )
  • 修复了在 InteractsWithInput 中定位承载令牌的代码(#39150)
  • 重构Illuminate/Log/LogManager::prepareHandler()( #39093 )
  • 在视图中完成渲染后刷新组件状态 ( 04fc7c2 )
  • 忽略转储中的表空间 ( #39126 )
  • 更新 SchemaState 进程以删除超时 ( #39139 )