0

我编写了一种小型解析语法,以帮助我简化 cakephp 中的视图代码。基本上,我创建了一个表格助手,当给定一个数据集和(可选)一组有关如何格式化数据的选项时,它将呈现一个表格,而不是我循环遍历数据并手动编辑它。

它允许用户随心所欲地复杂或简单,它可以变得非常强大。但是,为了实现这一点,我必须制作一个简单的解析语法。作为一个简单的例子,用户会做这样的事情:

$this->Table->data = $userData;
$this->Table->elements['td']['data'] = array(
    '{:User.username:}',
    '{:User.created:}' => array('Time::nice')
);
echo $this->Table->render();

然后在渲染表格时会生成:

<table>
    <tbody>
        <tr><td>rich97</td><td>Sun 21st 02:30pm</td></tr>
    </tbody>
</table>

出现问题然后我尝试像这样嵌套大括号:

{:User.levels.iconClasses.{:User.access:}:}

无论如何我只能在第一次循环中获得最里面的括号并循环直到没有匹配项?或者甚至一口气完成?或者甚至更好地使用strpos?

这是我的正则表达式:

 '/\{\:([^}]+)\:\}/'
4

2 回答 2

1

只需将左大括号添加到您的否定字符类:

'/\{:([^{}]+):\}/'
于 2010-03-16T15:58:54.440 回答
0
var $validate= array(
'name'=>array(
'notEmpty'  =>array(
    'rule'=>'notEmpty',
    'message'=>'Please Enter The Name'
),
'isUnique'  =>array(
    'rule'=>'isUnique',
    'message'=>'Name Already Exist' 
)
),
'address'=>array(
'rule'=>'notEmpty',
'message'=>'Please Enter The Address')

);
于 2011-02-15T13:10:51.320 回答