我试图找出编写PHP函数的最佳方法,该函数将从mysql表中递归地构建具有未知数量的子级别的多维数组.其目的是创建一个数据结构,该数据结构可以循环以在网站上创建导航菜单,每个菜单项可能具有带子菜单项的子菜单.
表中的注释字段是:
int ItemID
int ParentID
varchar ItemText
text ItemLink
tinyint HasChildren
所以函数返回数组的一个例子是:
$menuItems =
array(
itemID# =>
array(
'ItemText' => 'Home',
'ItemLink' => 'index.php',
'Children' => array(
itemID# => array (
'ItemText' => 'Home Sub 1',
'ItemLink' => 'somepage.php',
'Children' => 0
),
itemID# => array (
'ItemText' => 'Home Sub 2',
'ItemLink' => 'somepage2.php',
'Children' => 0
),
)
),
itemID# =>
array(
'ItemText' => 'Contact',
'ItemLink' => 'contact.php',
'Children' => 0
)
)
);
如果有人能指出我正确的方向来实现这一点,我将非常感激.谢谢!
我可以使用什么样的正则表达式来完全从基于我提供的选择器的内联样式表中删除css规则,通过javascript?
例如,我获取样式标记的内容,它包含一个规则:
.some_class
{
color: #FFF;
font-style: italic;
}
Run Code Online (Sandbox Code Playgroud)
如果我提供选择器'.some_class'什么是正确的regex/js方法,它将找到该选择器的任何出现并将其删除,其关联的括号以及这些括号内的所有属性/值
使用标准规范IMAP命令,如何根据传递的UID确定邮箱中的上一个和下一个UID,按日期排序邮箱邮件,最新的?
我是Padrino的新手(我来自PHP背景),以及一般的ruby web框架,并且一直试图弄清楚如何实现一个简单的用户身份验证和会话管理系统,但是还没有真正找到很多文档.主题.我知道padrino带有一个预先构建的"Admin"软件包,其中包括用户登录/身份验证等,但我宁愿从头开始自己动手,而不是尝试自定义他们的解决方案以满足我自己的需求.
所以我的问题是,在Padrino我怎么会去通过设置会话数据一旦用户名/密码组合已被证实对数据库,检索会话数据执行用于记录用户的简单的基于会话的认证系统来检查用户当请求保护某些页面/资源时,使用会话数据获取用户的ID /角色等,然后在用户注销时销毁该会话.作为一名PHP程序员,我习惯于$_SESSION将超全局用于此目的,在padrino/ruby中有类似的东西吗?我注意到enable :sessionsapp.rb中有一个,是:sessionspardrino的等价物吗?
我把这个问题尽可能保持通用,但我确实有一个特定的问题需要在我的应用程序中解决,这个问题的答案会有所帮助.
我正在使用的应用程序使用PHP/MySQL作为其后端,并且设置为使得用户看不到的文本/单词/短语在输出到浏览器的HTML/JS中被硬编码,而是存储在与语言键相关联的数据库表,用于根据用户的语言首选项获取单词/短语的正确翻译.现在这适用于应用程序HTML中存在的文本,但为了使这个系统能够使用javascript文件,所有javascript必须放在.php文件中并包装在<script></script>标签中,并与HTML,CSS等内联.
这会在系统的javascript中产生一些灵活性,因为它不能通过<link>标签包含在外部脚本中(我想除非你手动设置.php文件的标题),也许更重要的是它不能被缩小/打包等服务在生产环境中.
我首先想到的解决这个问题的方法是让一个php脚本放在任何其他javascript之前,它循环遍历语言数据库表中的每个记录,并使用语言键作为数组键创建一个关联的javascript数组,并将它们的值设置为根据用户的偏好翻译的短语.因此,通过这种方式,所有javascript文件都可以根据需要制作成实际的.js文件并进行链接,缩小,打包等,并且只需从创建的主语言数组中引用它们所需的短语(即alert(LANGUAGE.some_text);)
唯一的问题是,这个数组中的元素数量很容易进入数千甚至更大.回到我原来的问题,基于普通PC,javascript数组的可接受最大大小是多少?或者我开始时完全错误地攻击这个问题?
我正在将Ext 3.x中的现有应用程序更新为4,并且我已设法启用Ext的scoped reset CSS选项以防止Ext将CSS重置应用于我的整个应用程序,但是我现在遇到另一个问题.我的应用程序使用了很多硬编码的,非ext生成的HTML和CSS样式,其中大部分包含在Ext组件(面板,tabpanels等)中.显然,由于这个html是ext组件包含元素的后代,它继承了CSS重置样式.结果,完全提升了非Ext html的自定义样式.
具体来说,有两个CSS规则导致了这些问题:
.x-border-box .x-reset, .x-border-box .x-reset * {box-sizing: border-box;-moz-box sizing: border-box;-ms-box-sizing: border-box;-webkit-box-sizing: border-box;}[/php]
Run Code Online (Sandbox Code Playgroud)
这个属性不是什么大问题,我所要做的就是创建我自己的重置包装类,它将box-sizing改回'content-box'并将该类应用于我自定义html中最顶层的包装元素.该规则如下:
.my-reset, .my-reset *, .x-reset .my-reset *, .x-border-box .x-reset .my-reset * { box-sizing: content-box; -moz-box-sizing: content-box; -ms-box-sizing: content-box; -webkit-box-sizing: content-box;}
Run Code Online (Sandbox Code Playgroud)
然而,其他CSS规则是不容易否定的:
.x-reset html, .x-reset body, .x-reset div, .x-reset dl, .x-reset dt, .x-reset dd, .x-reset ul, .x-reset ol, .x-reset li, .x-reset h1, .x-reset h2, .x-reset h3, .x-reset h4, .x-reset h5, .x-reset h6, .x-reset pre, .x-reset code, .x-reset form, .x-reset fieldset, .x-reset legend, .x-reset input, …Run Code Online (Sandbox Code Playgroud) 使用某种类型的CSS3黑魔法,是否有可能模仿围绕3D圆柱体包裹文本的iOS7瞄准器效果(见下面的截图),给定一个具有已知高度的静态无序列表?

在我的应用程序中,我认为我是一个相当标准的User模型,其ID基于经过身份验证的用户的fbRef.getAuth().uid值(在我的情况下由匿名身份验证提供程序分配).我有一个全局用户,可以在用户进行身份验证/取消身份验证时动态更新,并使用基本this.store.find('user')调用进行填充.
当用户注销,然后使用相同的身份验证重新进行身份验证/登录时,就会出现问题.我在其他当前连接的浏览器的控制台中收到以下错误:
未捕获错误:
pushedData在状态root.deleted.uncommitted中尝试处理事件.
(但请注意,执行注销/重新登录的用户/浏览器不会收到错误)
在这种情况下我还需要做些什么来确保emberfire自动删除的记录在每个连接的客户端的缓存存储中完全提交,或者这是某种限制?
作为参考,以下是我在用户登录时创建记录的方式:
var user = this.store.createRecord('user', {
id: fbRef.getAuth().uid,
nickname: nickname,
joinedAt: new Date()
});
user.save();
Run Code Online (Sandbox Code Playgroud)
当他们退出时:
this.store.find('user', fbRef.getAuth().uid).then(function(user) {
user.destroyRecord();
});
Run Code Online (Sandbox Code Playgroud)