Skip to content

Dev.Front Template API.zh_cn

nothing edited this page Jul 25, 2013 · 7 revisions

模板中常用到的视图API

  1. asset load
  2. blocks
  3. config
  4. d
  5. escape
  6. form
  7. headTitle
  8. headMeta
  9. i18nTheme
  10. i18nModule
  11. nav
  12. paginationControl
  13. template
  14. templateComponent
  15. url
  16. widget

提醒:源码文件夹在lib/pi/View/Helper/

asset

$this->assetModule('css/front.css')    //返回当前模块下的静态文件路径
$this->assetTheme('css/style.css')     //返回当前主题下的静态文件路径
$this->assetModule('css/front.css', 'system')  //返回’system‘模块下的静态文件路径
$this->css($this->assetModule('css/front.css'))   //加载css
$this->css($this->assetModule('css/front.css'), 'append'); //默认append模式
$this->css($this->assetTheme('css/style.css'), 'prepend');  //引入到前面
$this->css(array());                    //同时引入多个
$this->js()  //与css同理

<!-- 框架引用 -->
$this->jQuery();    //引入jQuery
$this->jQuery('extension/fileupload.js');   //引入jQuery  fileupload.js

$this->Backbone();  //引入 underscore.js backbone.js

$this->bootstrap('css/font-awesome.css');  //加载bootstrap.min.css font-awesome.css
$this->bootstrap(array(
));
$this->bootstrap(array(
), false);   //不加载bootstrap.min.css

<!-- 页面底部引入js文件 -->
$this->footScript()->appendFile('file1.js')->appendFile('file2.js');

<!-- 区块脚本 -->
<?php $this->footScript()->captureStart(); ?>
alert('多次引用,但是我只会被加载一次');
<?php $this->footScript()->captureTo('multiple'); ?>

<!-- 页面底部脚本 -->
$script = "$(function() {
	$('#da-slider').cslider({
		autoplay	: true,
	});
});";
$this->footScript()->appendScript($script);

<!-- ie条件引用 -->
$this->css(array(
    $this->assetTheme('css/style.css'),
    $this->assetTheme('css/ie6.css') => array(
        'conditional'   => 'IE 6',  // lt IE 8
    ),
));

blocks

读出一个页面8个区域的所有区块。一般出现在{theme name}/template/layout-front.phtml。然后引入到页面中去。

$blocks = $this->blocks();  // d($blocks);

Pi::config()

这个方法能能操作var/config目录下的文件.

参数

name

    配置名称。

domain

    配置位置,默认值,general

返回值

根据名字返回的数据就是config表里category => generalmodule => system,如果没有传参数name,则返回Pi\Application\Config处理器,帮助你操作配置数据。

  1. 返回var/config/engine.php里面的数据
  2. 返回config里面的数据
Pi::config('theme')
Pi::config('environment')
Pi::config('charset')
Pi::config('keywords', 'meta')
....

d

在页面footer处有个debug,点开就能看见调试的变量

d($var);

escape

过滤html代码

$this->escape($value);

form

<?php 
    $form->setAttribute('class', 'form-horizontal');
    $form->setAttributes(array(
    ));

    $element = $form->get('username'); 
    $element->getMessages();    //获取表单元素错误信息
    $element->getOption('label');  //获取label
    $this->formElement($element); //输出元素
    $this->formElementErrors($element) //输出元素错误信息
?>
//输出一个bootstrap样式的表单元素
<?php
    $form->setAttribute('class', 'form-horizontal');
    echo $this->form()->openTag($form);
    $this->FormElementErrors()->setMessageOpenFormat('<span class="help-inline">')->setMessageCloseString('</span>');
?>

<?php
    $element = $form->get('username');  //输出一个bootstrap样式的表单元素
    echo sprintf('<div class="control-group%s"><label class="control-label">%s</label><div class="controls">%s%s</div></div>',
    $element->getMessages() ? ' error' : '',
    $element->getOption('label'),
    $this->formElement($element),
    $this->formElementErrors($element));
?>

headTitle

设置页面title

$this->headTitle('Zend Framework'); //default append
$this->headTitle('Zend Framework', 'set');
$this->headTitle('Zend Framework', 'prepend');

headMeta

设置页面meta标签信息

$this->headMeta()->appendName('{name}', '{content}');

i18nTheme

加载主题翻译文件

  1. 创建{theme name}/locale/{language}/{file name}.csv
  2. 模板中需要翻译的变量都使用<?php _e({value}); ?>
  3. 加载翻译文件的代码,一般放在模板的顶部
I18nTheme(string $domain, string $theme = null, string $locale = null)
$this->i18nTheme('main');
$this->i18nTheme('main', 'default');
$this->i18nTheme('main', null, 'en');

系统翻译 (以中文为例)

  1. usr/locale下面创建zh-CN,就能在SEETING->system->Configurations看到语言选择,选择zh-CN。
  2. 创建zh-CN/main.csv
Edit,编辑

清楚系统缓存后,进入后台首页,就能看见edit被翻译成'编辑'了。

  1. 模块翻译,结构如下
{module name}/locale/zh-CN/main.csv

navigation

navigation加载指定的导航 参数:nameoptions。name可以是'front',或者是表core_navigation_node里面的名字。options设置导航缓存。

$this->navigation('front')->render();
$this->navigation('{module name}-front')->render();
$this->navigation('front')->render(array('cache_ttl' => 86400, 'cache_level' => none, 'cache_id'    =>'nav_system'));

注意:core_navigation_node里面的数据的增加是在模块的config/navigation.php文件里。

nav

$navigation = $this->nav('front');
$navigation = $this->nav('front', array('cache_ttl' => null, 'cache_level' => 'role'))

这个类来加载全局导航,它会从core_config表读取数据,通过调用navigation来输出导航。用户可以通过后台定制自己想要的导航,operation->system->navigations,然后设置全局默认的导航。

paginationControl

echo $this->paginationControl($paginator, 'Sliding', 'paginator');
echo $this->paginationControl($paginator, 'Sliding', 'paginator', array('class'=> '{classname}'));

第四个参数是个分页模板赋值一个类,可以去掉。具体程序是如何分页,请看pagination

template

找一个模板的位置,然后include在页面里面。

echo $this->template('{module name}:admin/{template name}');
$block = $this->template('block');

templateComponent

调用system模块里面的组件

include $this->templateComponent('form');

url

生成url

Object url(string $name = null, array $params = array(), array $options = array(), boolean $reuseMatchedParams = false)
name
路由名字,default for front-end, admin for admin-end, home for homepage and feed for feed section

$this->url('default', array('module' => 'demo', 'controller' => 'test'));
$this->url('', array('module' => 'demo', 'controller' => 'index', 'action' => 'index'));
$this->url('admin', array('controller' => 'index', 'action' => 'index'));

widget

输出已有的区块,区块表在core_block

$this->widget('{block name}')
Clone this wiki locally