marcoshoo/phptal-laravel

适用于 Laravel 5.x 的 PHPTAL

dev-master 2016-02-07 17:10 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:58:26 UTC


README

允许您无缝地在 Laravel 中使用 PHPTAL

安装

MarcosHoo\LaravelPHPTAL 添加到 composer.json 中的需求

{
    "require": {
        "phptal/phptal": "dev-master",
        "marcoshoo/phptal-laravel": "dev-master"
    }
}

使用 composer update 更新您的包或使用 composer install 安装。

Composer 安装或更新您的包后,您需要将 PHPTAL 注册到 Laravel 中。打开 app/config/app.php 并找到底部的 providers 键,然后添加

MarcosHoo\LaravelPHPTAL\PHPTALServiceProvider::class,

下一步是将示例配置复制到您的 config 目录。

php ./artisan vendor:publish --provider 'MarcosHoo\LaravelPHPTAL\PHPTALServiceProvider'

配置

目前 PHPTAL 默认设置为 HTML5,但是您可以在其 config.php 文件中更改此设置,使用 XHTML 或 XML。

过滤器

PHPTAL 还有一个很好的功能,您可以使用称为过滤器,例如我有一个用于清除图像、js、css 缓存的过滤器,这可以通过配置文件进行配置。

'preFilters' => [
    'bustCache',
    'minimizeJs',
    'adderJs'
]

#使用

您调用 PHPTAL 模板的方式就像调用任何其他视图一样

view('hello', [...])

翻译

PHPTALTranslator 类使用 Laravel 翻译服务,因此翻译文件应放置在框架相同的翻译文件目录中。如何使用包含在名为 'messages.php' 的文件中的 id 为 'welcome' 的翻译文件的示例

<div i18n:domain="messages" i18n:translate="string:welcome"></div>
<div i18n:domain="messages" i18n:translate="">welcome</div>
<div i18n:translate="string:messages.welcome"></div>
<div i18n:translate="">messages.welcome</div>

复数化

翻译文件

<?php
# File 'messages.php'
return [
    'apples' => 'There is one apple|There are many apples',
    'oranges' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',    
];
<div 18n:domain="messages" i18n:translate="string:apples|5">
    <!--There are many apples -->
</div>
<span tal:define="q php:22" i18n:translate="string:messages.oranges|${q}">
    <!--There are many -->
</span> oranges

插值

<?php
# File 'messages.php'
return [
    'welcome_ex1' => 'Welcome ${user}, you have ${mails} unread mails.',
    'welcome_ex2' => 'Welcome :name!',
    'welcome_ex3' => 'Welcome :anonymous!',
    'anonymous' => 'anonymous user',
];
<div 18n:domain="messages" i18n:translate="string:welcome_ex1">
    <span i18name="name" tal:replace="user/name"/>
    <span i18name="name" tal:replace="user/nbrMails"/>
</div>
<div 18n:domain="messages" i18n:translate="string:welcome_ex1||user=${user/name}|mails=${user/nbrMails}">    
</div>
<div tal:define="name user/name" 18n:domain="messages" i18n:translate="string:welcome_ex2">    
</div>
<div 18n:domain="messages" i18n:translate="string:welcome_ex3">
    <!-- Welcome anonymous user! -->    
</div>