Solar有很多可用的视图辅助类。本章和第一章都介绍了一些,例如:Solar_View_Helper_Head
、Solar_View_Helper_GetText
、Solar_View_Helper_GetTextRaw
、Solar_View_Helper_Escape
和Solar_View_Helper_Action
。学习这些辅助类最好的方法就是看它们的API文档:http://solarphp.com/package/Solar_View_Helper。
Note | |
---|---|
|
另外,你可以在Solar中很容易扩展自己的视图辅助类。我们现在来写一个把10位数字转化为标准电话号码格式的辅助类。例如,把1235551212
转化为(123)
555-1212
。
首先,我们要知道新的辅助类文件的位置。默认情况下,Solar会在下面两个位置寻找辅助类:
-
SYSTEM/source/acme/Acme/View/Helper
(Acme是我们的工作区) -
SYSTEM/source/solar/Solar/View/Helper
另外,你可以修改配置文件,在Solar寻找辅助类的类栈中增加新类。例如,在SYSTEM/config.php
中添加如下代码:
$config['Solar_View']['helper_class'] = array('Acme_App_Helper');
这将会把类栈修改成下面这个样子:
-
Acme_View_Helper
-
Acme_App_Helper
-
Solar_View_Helper
为了更直观,我们就使用默认的Acme_View_Helper类。
在SYSTEM/source/acme/Acme
目录下创建View
目录。
$ cd SYSTEM/source/acme/Acme $ mkdir View
在SYSTEM/source/acme/Acme/View
目录下创建另一个目录Helper
。
$ mkdir Helper
切换至Helper
目录,并创建文件Phone.php
。
$ cd Helper $ vim Phone.php
在Phone.php
文件中加入以下代码并保存。
<?php /** * View helper to take a 10 digit number and * convert to (###) ###-#### * */ class Acme_View_Helper_Phone extends Solar_View_Helper { /** * Returns a formatted phone number. * @param string|int $number Unformatted number * @return string The formatted number */ public function phone($number=null) { if (! $number) { return; } // Add your own validation logic here $code = substr($number, 0, 3); $prefix = substr($number, 3, 3); $line = substr($number, 6, 4); return $this->_view->escape("($code) $prefix-$line"); } } ?>
现在我们来测试一下,看是否有效果。记住此辅助类没有验证逻辑。
打开SYSTEM/source/acme/Acme/App/Blog/View/index.php
视图文件,并加入以下代码:
<?php echo $this->phone('1235551212'); ?>
保存文件,浏览博客首页。你应该会在页面底部看到(123) 555-1212
。