如果没有的东西,每个人都讨厌约Magento的它能够写一些代码之前无休止真实配置的模块.我正在尝试为将来即将启动的项目收集常见的Magento配置错误列表.
我正在寻找在类名上使用错误的命名约定,<class />在设置分组类名时忘记包装器的具体示例.像你这样的小事会让你吵吵几个小时直到你意识到你的错误.
越多细节越好!
是否可以将导航项添加到jqGrid中的"顶部寻呼机"?如果是这样,这样做的语法是什么?
我的页面上有一个HTML代码段,如下所示
<table id="mygrid">
</table>
<div id="mygrid_pager"></div>
Run Code Online (Sandbox Code Playgroud)
然后是一个看起来像这样的jqGrid初始化
$('#mygrid').jqGrid({
..., //full config string removed for brevity,
pager:jQuery('#mygrid'),
toppager:true
});
$('#mygrid').jqGrid('navGrid', '#mygrid_pager'),{
'add':false,
'del':false,
'edit':false,
'search':false,
'refresh':false,
'cloneToTop':true,
}).navButtonAdd('',{...}); //config navbutton string for button removed for brevity
Run Code Online (Sandbox Code Playgroud)
ID为#mygrid_toppager的"顶部寻呼机"会自动插入到页面中,但其自定义按钮(显示在底部寻呼机上)不会出现.
我看到navGrid包含了一个"cloneToTop"选项,但它的描述看起来很混乱,我只能假设我使用它错了.
如果已定义,则克隆从底部寻呼机到顶部寻呼机的所有操作.请注意,navGrid只能应用于顶部寻呼机.顶部寻呼机的ID是网格ID和"_toppager"的组合
我对该选项的理解是将按钮添加到底部寻呼机,并将它们克隆到顶部.然而,接下来的描述继续说"navGrid只能应用于顶级寻呼机,这是没有任何意义的,因为你正在克隆它.真的,我显然对API如何是一个深刻的误解应该被使用.
如果有人能指出我正确的方向(即使只是一个工作的例子),我会很感激.我更喜欢通过官方API来实现这一点,而不是像StackOverflow上其他地方看到的那样聪明的DOM操作.
Drupal 7如何渲染页面?它与MVC的视图系统相当.
当谈到呈现请求的最终HTML页面时,我使用的大多数PHP框架(基于MVC)采用了一种方法,其中顶级布局/页面PHP文件设置基本文档结构,然后呈现我们的各种子视图通过包含或查看渲染方法.
//Simplified version
Page.phtml
Head.phtml
Body.phtml
Banner.phtml
Topnav.phtml
Left.phtml
Content.phtml
Footer.phtml
Run Code Online (Sandbox Code Playgroud)
我对Drupal对此的看法感到有些困惑.我正在通过Pro Drupal Development阅读,它开始于类似的领域page.tpl.php.然而,它掩盖了主题引擎(正确的术语?)如何将PHP的各个部分带入此页面(不是批评,本书的方法与我所使用的路径不同).
此外,Drupal 7主题似乎没有该page.tpl.php文件,所以它(页面骨架)的来源不明确(对我而言).另外,从我所看到的内容看起来似乎涉及"块",但我不清楚"块"是否构成整个页面,或者块是否是主题选择性使用的东西.
因此,从高级概念开始工作(或者根据您的喜好获得详细信息),Drupal 7如何渲染页面?
我意识到你可以,而且可能应该从Drupal开始,而不了解一切是如何结合在一起的.我特意试着学习各种Drupal系统是如何组合在一起的.向厌倦阅读此免责声明的人致歉!
在节点的幕后,http模块的createServer方法(及其回调)如何与事件循环交互?是否有可能createServer在userland中构建类似于我自己的功能,或者这需要更改节点的底层系统代码?
也就是说,我对节点事件循环的一般理解是
我仍然有点模糊的是如何createServer适应事件循环.如果我做这样的事情
var http = require('http');
// create an http server and handle with a simple hello world message
var server = http.createServer(function (request, response) {
//...
});
Run Code Online (Sandbox Code Playgroud)
每当HTTP请求进来时,我告诉节点运行我的回调.这似乎与我理解的事件循环模型不兼容.似乎有一些非userland和非事件循环正在侦听HTTP请求,然后运行我的回调,如果有人进来.
换句话说 - 如果我考虑实现我自己的版本版本createServer,我想不出办法,因为我安排的任何回调都会运行一次.是否createServer仅使用setTimeout或setInterval不断重新检查传入的HTTP请求?或者有更低层次,更高效的事情.我理解我不需要完全理解这一点来编写有效的节点代码,但我很好奇底层系统是如何实现的.
(我尝试在节点源中进行跟踪,但由于我不熟悉节点模块系统,或者对系统代码深处的编码模式的遗留假设w/r/t),因此进展缓慢
作曲家有没有内置的方法来显示当前项目中的插件列表?或者是寻找作曲家插件某种文本搜索通过唯一的选择composer.json文件vendor的东西,如
$ find vendor -name composer.json | xargs grep -i -r 'composer-plugin'
Run Code Online (Sandbox Code Playgroud) 无论我是在某处设置新的 VPS 还是在我坐着的旧计算机上安装 Ubuntu ISO,当我想要设置我最喜欢的编程环境时,我需要做的就是输入
sudo apt-get install foo baz bar
Run Code Online (Sandbox Code Playgroud)
然后我的电脑——做一些事情——最后我通常拥有我想要的软件。
这是如何运作的?正在apt-get下载预编译的二进制文件吗?还是为我下载源代码和构建东西?或者某种其他打包的东西正在安装?还是三个都可以?无论如何,谁在构建这些二进制文件,管理这些构建配方,或者将这些包放在一起?无论 apt-get 在做什么——它从哪里发送给我的数据?
我模糊地知道我的作曲家/VPS 将有一个apt-get它检查包的存储库列表。这些只是托管在某个指向事物的 HTTP 服务器上的提要吗?或者是其他东西?谁托管这些提要?
当我使用像 composer(用于 PHP)这样的包管理器时,我知道在 packagist.org composer 存储库中有一个主包列表,用户可以指定其他包存储库,并且该存储库仅指向版本控制系统,其中存储包的源文件。我想对apt-get工作原理有类似的高层次理解。
我意识到这是一个不可能广泛的问题 - 指向我可以在 FM 中阅读有关所有内容如何联系在一起的指示对我来说是一个完全可以接受的答案。(尽管如果您对 linux 包管理充满热情,请不要让这阻止您回答)
有一种"更好"的方法(内置函数,更好的算法)来规范化PHP数组中所有键的情况吗?虽然循环并创建一个新的数组工作
$new = array();
foreach( $old as $key=>$value) {
$key = strToLower($key);
if(!array_key_exists($key,$new) {
$new[$key] = $value;
}
else {
throw new Exception('Duplicate Key Encountered');
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎这些应该是一种"就地"做到这一点的方法.
更新:看起来有一个内置的,没有欺骗性命名但我不知何故错过了array_change_key_case.我仍然有兴趣看到算法方法可以让你更好地处理当你点击"重复"键时发生的事情.
尽管不可行,但使用PHP的shell命令与非php系统命令进行交互仍然是在Web应用程序中快速实现某些结果的常用方法.
有没有人将常见的用例抽象到一个类库(Zend中的某些东西?),它提供了一种更理智/常用的方法来处理它?每当我遇到(或不得不生产)这种代码时,它就是一堆程序性意大利面,一遍又一遍地复制粘贴.我想知道是否(希望)PHP社区提出了一种更好的方法来处理在web/php应用程序中使用命令行应用程序.
在Drupal 7中,每个核心模块都有一个*.api.php文件,其中*是模块的名称.例如
modules/node/node.api.php
modules/path/path.api.php
Run Code Online (Sandbox Code Playgroud)
这些文件是为了什么?它们包含以函数开头的函数hook_,以及(我认为)模块调用的钩子的名称.例如
modules/system/system.api
Run Code Online (Sandbox Code Playgroud)
具有
function hook_entity_view($entity, $type, $view_mode, $langcode) {
$entity->content['my_additional_field'] = array(
'#markup' => $additional_field,
'#weight' => 10,
'#theme' => 'mymodule_my_additional_field',
);
}
Run Code Online (Sandbox Code Playgroud)
entity_view系统调用了一个钩子,您可以在自己的模块中实现,但是(它不会出现)hook_entity_view被调用.
这些功能是什么?它们是否曾被系统调用过?如果是的话,何时?如果没有,为什么他们在那里?
有没有办法在运行时确定PHP文件是否作为phar存档的一部分运行?
即,本机实现可能看起来像这样
function isRunningAsPhar()
{
$first_include = get_included_files()[0];
return strpos($first_include, '.phar') !== false;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果用户已将phar重命名为具有不同的文件扩展名,或者通过符号链接删除文件扩展名,则这可能不起作用.