如何将 Smarty 3 包含到 Laravel 4 中?

2024-05-20

我是 Laravel 的新手,所以仍在习惯这些概念,但是我有大约 10 年的使用 Smarty 的经验。所以我希望利用这一点(除了事实上 Blade 似乎缺乏太多我发现有用且在 Smarty 中开箱即用的功能,但无论如何除了这个问题的要点之外)。

我一直在寻找在 Laravel 中使用 Smarty 的正确方法,尽管在一些论坛上,例如here http://forumsarchive.laravel.io/viewtopic.php?id=9188似乎可能不清楚我需要做什么才能在框架内正确使用它。更具体地说,我的问题是:

  1. 我应该将哪个 Composer 包包含在我的composer.json?似乎有this https://github.com/lukeforeman/Laravel4-SmartyView其中包括 Smarty 本身,因为它被修改了(不太热衷于这一点)。和他们还建议http://bundles.laravel.com/bundle/SmartyView http://bundles.laravel.com/bundle/SmartyView。不确定它是否相同,因为 laravel.com 的包子域甚至没有出现。它曾经在几天前出现过,但我不知道他们是否将其关闭,因为捆绑包现在已经过时并被软件包取代了......不确定。还有this http://packalyst.com/packages/package/latrell/smarty

  2. 我应该如何配置 Laravel 以使用 Smarty 视图而不是 Blade 视图?

  3. 鉴于 Laravel 使用 REST 风格的漂亮 URL,我应该如何包含来自 Smarty 的 CSS 和 JS 文件 视图,以便 Laravel 动态设置它们的路径?在《Blade》中,你可以执行以下操作:{{ HTML::style('css/style.css') }}。我可以使用类似的东西吗?或者更好地通过调用 HTML 类从代码中设置模板变量? (我真的不喜欢在模板中调用 PHP 代码,这些代码应该只执行表示逻辑。)

抱歉,如果有些问题有点微不足道。


好吧,经过更多的研究,我成功地将 Smarty 3 轻松地集成到 Laravel 4 中。我不确定这是否是最好的方法,但它工作得很好,所以欢迎评论或进一步的建议。

我安装了this http://packalyst.com/packages/package/latrell/smartySmarty View for Laravel 并按照说明将其添加到列表中providers in app/config/app.php。运行后php artisan config:publish latrell/smarty命令配置已自动创建,我已准备就绪。这个包似乎还使用了正确的 Smarty 库,而不是一些修改过的模板。

然后我创建了一个普通的旧 HTML 文件,其中包含.tpl扩展在app/views目录,以及相应的控制器app/controllers目录,以及相应的路由routes.php嘿,很快,它就顺利地工作了。

我什至修改了 BaseController 以维护模板变量的通用列表(例如 CSS 样式等)以注入 HTML,而无需在模板中放入难看的 PHP 代码。 (不知道有没有更好的方法直接将它们设置到View来自BaseController而不是期望子类在调用中将它们传递给make方法,但我想这是一个不同的问题。)

下面的代码适合可能需要它的人:

HelloWorld.tpl

<!doctype html>
<html lang="en">
<head>
    <title>Hello World</title>
    <meta charset="UTF-8">
    {$style}
</head>
<body>
    <div>
        <h1>Hello {$name}</h1>
    </div>
</body>
</html>

BaseController.php

class BaseController extends Controller {

    protected $template_vars = array();

    protected function addTemplateVar($key, $value)
    {
        $this->template_vars[$key] = $value;
    }

    /**
     * Setup the layout used by the controller.
     *
     * @return void
     */
    protected function setupLayout()
    {
        //not sure if I need this any more since I am using Smarty
        if ( ! is_null($this->layout))
        {
            $this->layout = View::make($this->layout);
        }

        $this->addTemplateVar("style", HTML::style("css/bootstrap.css"));
    }

}

HelloWorldController.php

class HelloWorldController extends BaseController 
{          
    public function showHelloWorld()
    {
        $this->addTemplateVar('name', 'World!');
        return View::make('helloworld', $this->template_vars);
    }
}

In routes.php:

Route::get('helloworld', 'HelloWorldController@showHelloWorld');

希望它对其他人有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Smarty 3 包含到 Laravel 4 中? 的相关文章

  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • PHP 或 WAMP 不确定是什么

    我已经安装了 WAMP 服务器 2 0 PHP 5 4 3 安装WAMP后我已经重新启动了所有服务并且可以打开 phpinfo 显示良好 phpmyadmin 它也显示得很好 我可以使用数据库 然而 当在 Chrome 中运行简单的 php
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Laravel,从 JSON 中删除 null Eloquent 对象属性

    有没有一种优雅的方法从 Eloquent 对象中删除 NULL 值 我的对象嵌套有关系 这个特定的调用可能会长达数千行 所以我尝试这样做的主要原因是为用户节省带宽 但服务器性能也是一个考虑因素 My code data locations
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐