Laravel - 带有模板的自定义插件

Posted

技术标签:

【中文标题】Laravel - 带有模板的自定义插件【英文标题】:Laravel - Custom Plugin with Template 【发布时间】:2014-02-17 00:06:52 【问题描述】:

我有这些“容器”,每个容器都包含我代码的一个主要部分。因此,一个页面由几个容器组成,它们的外观和行为都相同。在我的路由目录中,我有以下架构

app
    /containers
        /Main
           MainContainer.php
           ContainerName1.php
           ContainerName2.php
           ...
        /Side
           SideContainer.php
           ContainerName3.php
           ContainerName4.php
           ...
        /Aux
           AuxContainer.php
           ContainerName5.php
           ContainerName6.php
           ...
        BaseContainer.php 

所以MainContainer.phpSideContainer.phpAuxContainer.php 都扩展了BaseContainer.php,每个ContainerName#.php 扩展了相应的容器。我目前在这些容器中完成了所有的 html/视图。但我想将所有 HTML/视图移动到模板中。

我应该将模板放在/views 文件夹中,还是应该将其保存在/containers 文件夹中?我可能想将它保存在/containers 文件夹中的原因是因为会有一个base.blade.phpmain.blade.php(和side/aux),然后每个ContainerName# 一个。所以如果它们都在那里,它可能会保持清洁?如果我能做到这一点,我该如何称呼它?

【问题讨论】:

您到底想构建什么? BaseContainer 是什么? 我的容器保存着我的代码。例如,在此页面上,每个帖子都是一个容器。回复进入容器的“页脚”,每个回复本身就是一个容器。 那么,你是在谈论局部? 好吧,我不想直接调用partials。我想调用一个插件,插件返回一个视图,然后被渲染。 【参考方案1】:

我认为这部分是意见问题,但我会在这里提出我的意见,我想如果人们不同意我可以投反对票。

我认为最好将您的所有观点保留在 /views 中,主要是因为这对他们来说是合适且预期的地方。如果你以外的任何人维护这个项目,他们会在/views 中寻找视图,我认为如果将它们存储在某些容器中,他们会感到非常困惑。

这是我的项目中的视图结构:

views
    /layouts
        main.blade.php
    /includes
        analytics.blade.php
        navbar.blade.php
        flair.blade.php
        ...
    /account
        main.blade.php
        public-listing.blade.php
        public-profile.blade.php
        ...
    /game
        listing.blade.php
        settings.blade.php
        ...
    about.blade.php
    contact.blade.php
    help.blade.php

我在layouts 中有我的主要模板(这本质上是我的股票引导代码),我将在includes 中包含一些小部分(它们本身永远不会是网页,但可以制作其他网络页面工作),其余部分根据控制器放入子文件夹中。从我的每个“完整”视图中,最上面一行是@extends('layouts.main'),这确保它继承了正确的布局(如果有多个,尽管在我的示例中没有)。

我认为这样的东西可以很容易地为您的项目工作,并且可以大大简化您和其他任何人的维护工作。

【讨论】:

以上是关于Laravel - 带有模板的自定义插件的主要内容,如果未能解决你的问题,请参考以下文章

使用带有附加参数的自定义规则验证 Laravel 中的数组

带有回调的自定义插件

SublimeText插件Emmet的自定义模板

带有外部模板的自定义类型 fmt 格式化程序,有啥缺点吗?

带有模板的自定义 Django FormWizard 步骤

WordPress插件中的自定义页面模板