Nova 的重复字段和灵活内容
发布时间:作者: Florian Bouché
灵活内容是 Whitecube 提供的 Laravel Nova 包,它允许您将多个 Nova 字段类型组合到单个“灵活字段”中。
操作很简单:类似于“字段面板”,该包会建议将多个字段组合到“布局”块中。
public function fields(Request $request) { return [ Flexible::make('Content') ->addLayout('Simple content section', 'wysiwyg', [ Text::make('Title'), Markdown::make('Content') ]) ->addLayout('Video section', 'video', [ Text::make('Title'), Image::make('Video Thumbnail', 'thumbnail'), Text::make('Video ID (YouTube)', 'video'), Text::make('Video Caption', 'caption') ]) ];}
此外,该包还提供通过 button()
方法更改“添加布局”按钮文本的可能性。
Flexible::make('Content')->button('Add something amazing!');
在模型上实现 HasFlexible
特性后,您就可以调用 flexible($attribute)
方法,该方法会自动将属性值(默认情况下存储在 JSON 中)转换为 Whitecube\NovaFlexibleContent\Layouts\Collection
集合。
然后,此方法允许您在控制器或视图中使用此灵活内容。
use Illuminate\Database\Eloquent\Model;use Whitecube\NovaFlexibleContent\Concerns\HasFlexible; class MyCustomModel extends Model { use HasFlexible; /** * @return Whitecube\NovaFlexibleContent\Layouts\Collection */ public function getFlexibleContentAttribute() { return $this->flexible('flexible-content'); }}
为了更进一步,开发人员建议我们将其创建的另一个包:Nova 页面 与这些功能一起使用。这使您可以编辑静态页面,例如“关于我们”页面,而无需分别声明每个模板。
有关安装说明或了解有关此包的更多信息,我们邀请您访问 whitecube/nova-flexible-content 项目的 Github 页面。