我想知道如何获取当前页面名称,基本上"只是"路由中的最后一个参数(即/ news或/ about).我这样做是因为我希望能够突出显示导航中的当前页面.
理想情况下,我想将当前页面名称存储在全局变量中,以便在Twig中我可以将当前页面名称与链接进行比较并相应地添加一个类.
我无法弄清楚如何将当前页面名称添加到全局变量.我尝试过使用这样的东西:
$app['twig']->addGlobal('current_page_name', $app['request']->getRequestUri());
Run Code Online (Sandbox Code Playgroud)
在我的app.php文件的顶部,但是"请求范围之外"错误.但我不想在每条路线中都包括这一点.
最好的方法是什么?
这是交易.我用两个或多或少的表来设置我的数据库(实际上,我的表格要复杂得多,但这是要点):
表`元素`
表`element_drafts`
正如您可能从名称中猜到的那样,第二个表包含第一个表中的行草稿行.(不要担心建议更好的方法来做草稿=)我的表比显示的更复杂,并且有一个草稿表是最好的解决方案atm).
我在两个表之间建立了一个关系,这样我就可以做到这样的事情:
// Get all of the elements along with their draft rows
$elements_with_drafts = Element::with('drafts')->all();
Run Code Online (Sandbox Code Playgroud)
我也可以通过这样做只选择有草稿行的元素:
$elements_with_drafts = Element::with('drafts')
->whereIn('id', function($query)
{
$query->select('element_id')->from('element_drafts');
})
->get();
Run Code Online (Sandbox Code Playgroud)
但是我想做的一件事我无法弄清楚:将草稿值复制到其父元素.
我不完全确定这是可能的.是吗?
我的猜测是,它可能会这样做:
$elements_with_drafts = Element::with('drafts')
->whereIn('id', function($query)
{
$query->select('element_id')->from('element_drafts');
})
->update(array("data" => function($query)
{
// Somehow select the draft value?
});
Run Code Online (Sandbox Code Playgroud)
我觉得我很亲密,但我不太确定如何做我想做的事.有任何想法吗?
注意:显然这可以通过foreach循环相对容易地完成,但我希望解决方案只是一个查询.
如何为调用同一类的其他方法但不返回值的方法编写单元测试?(让我们说PHPUnit.)
例如,假设我有以下类:
class MyClass {
public function doEverything() {
$this->doA;
$this->doB;
$this->doC;
}
public function doA() {
// do something, return nothing
}
public function doB() {
// do something, return nothing
}
public function doC() {
// do something, return nothing
}
}
Run Code Online (Sandbox Code Playgroud)
你会怎么测试doEverything()?
编辑:
我问这个是因为从我看过的内容看来,几乎所有的方法都应该有自己的专用单元测试.当然,你也有功能和集成测试,但那些目标特定的例程,可以这么说(不是必须在每个方法级别).
但是,如果几乎所有方法都需要自己的单元测试,我认为对所有上述方法进行单元测试将是"最佳实践".是/否?
我正在使用一些使用 :checked 样式的 CSS 表单元素,例如。
input:checked + label {
background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
相应的 HTML(例如,简化的)将是:
<input type="checkbox">
<label>My Checkbox</label>
Run Code Online (Sandbox Code Playgroud)
不幸的是,当 .field_with_errors 发挥作用时, :checked 样式会造成严重破坏,因为它会在两个元素周围创建一个 div,如下所示:
<div class="field_with_errors">
<input type="checkbox">
</div>
<div class="field_with_errors">
<label>My Checkbox</label>
</div>
Run Code Online (Sandbox Code Playgroud)
据我所知,鉴于 HTML 结构,不再可能根据是否选中复选框来设置标签样式。
我无法完全删除field_with_errors标签或输入,因为我正在处理的应用程序的遗留方面依赖于它。
所以我想知道是否可以简单地制作它,以便field_with_errors在隐藏元素时不会包裹它们。我对 Ruby/Rails 还不太了解,但我知道(当然)它运行预页面加载。我仍然满怀希望地希望也许我没有在想什么:-D。
任何替代但类似有效的方法也受到欢迎。
我觉得我已经彻底搜索了整个互联网,但似乎无法想象这一个.我正在使用Silex(最新版本),似乎无法弄清楚如何使用Silex的ServiceProvider系统返回一个类的实例供使用.
我知道如何创建基本服务提供商.
我不知道该怎么做才能让这个服务提供商使用自定义类.我已经尝试了我能想到或在网上找到的所有内容.问题的一部分是Silex关于此的文档并不是非常广泛,并且在对它的完成方式(或者看起来如此)进行了相当大的改变之前,已经询问/回答了大多数关于此类问题的问题.答案不是最新的.
所以,简单地说:我想使用Silex的$ app ['myclass']类型系统来访问我的类,这样我就可以执行$ app ['myclass'] - > myMethod()等操作.
我挂了的就是这个,虽然我可以创建服务提供商,但我无法弄清楚如何让服务提供商识别这个类.我已经尝试使用composer auto-load pso-0设置完整的命名空间,并尝试使用MyClass/MyClass类型的东西.
哈哈,基本上,因为文档很少,可能有任何一部分我做错了.
有人会编写一个当前的分步流程来将自定义库/类连接到$ app变量吗?我认为这不仅有助于我,也有助于其他人.谢谢!
假设我有这些元素:
<li class="class1">content</li>
<li class="class1">content</li>
<li class="class1 class2">content</li>
<li class="class1">content</li>
<li class="class1">content</li> <!-- I want nth-child(4n) to select this-->
<li class="class1">content</li>
<li class="class1">content</li>
<li class="class1">content</li>
Run Code Online (Sandbox Code Playgroud)
我想使用a .class1:nth-child(4n)来选择每个第4个元素,但是如果一个元素有两个class1并且class2我不希望它被包含在"每第四个"计数中 - 我只是希望它被忽略.
我试过了.class1:not(.class2):nth-child(4n),但它似乎没有用.有任何想法吗?
这是一个实验的JSFiddle:http://jsfiddle.net/jWxb6/2/
我正在使用Wordpress插件进行开发。我的开发目录包含许多特定于开发的内容(例如Grunt文件,Sass文件,git存储库本身等)。
显然,我不想分发包含所有这些开发文件的文件夹。人们下载我的Wordpress插件时不希望有MB的Grunt文件。
但是到目前为止,我的“发布”过程很麻烦:
我不知道实现此目标的最佳方法,但是我对Git钩子非常陌生,我有这样的想法:我是否可以设置一个Git钩子,使其仅将所需的生产文件压缩为ZIP文件并存储它与回购?这样,每次提交时,它将自动创建一个新的发行版ZIP。
那可能吗?如果是这样,有人可以指出我正确的方向吗?
哦,我也在Windows(?_ ?;)上。因此,我希望有一种方法可以在Windows上实现。
git存档可以包含.git项目所在的目录吗?
例如,假设我的目录结构如下:
-- /my-project-dir
----- /.git
----- /css
----- index.html
----- scripts.js
Run Code Online (Sandbox Code Playgroud)
默认情况下,当我执行git存档时,我最终得到一个ZIP文件,如下所示:
-- my-project-dir.zip
----- /css
----- index.html
----- scripts.js
Run Code Online (Sandbox Code Playgroud)
我想知道archive命令是否也可以包含父目录,例如:
-- my-project-dir.zip
----- /my-project-dir
-------- /css
-------- index.html
-------- scripts.js
Run Code Online (Sandbox Code Playgroud) 我只是在学习React,虽然我了解许多基础知识,但是有一个概念我还没有见过任何人涵盖:如何获取通过服务器端语言(例如PHP)加载的信息,并在加载时使用它反应视图?
我本来希望我RenderDom在php视图中有电话,例如:
// In the pre-compiled JSX file
var Greeting = React.createClass({
render: function() {
<div>
<h1>Hello, { this.props.username }</h1>
</div>
}
});
// In my PHP view
<script type="text/jsx">
ReactDOM.render( <Greeting username="<?php echo $username; ?>"/>, document.body );
</script>
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。什么都不显示。我认为这是因为text/jsx脚本区域未执行...但是,如果我删除该语法区域,则当然可以。
太...我只是想知道,从数据库中加载数据并将其传递到React组件的典型方法是什么?
我看了一下,似乎无法弄清楚如何在使用Silex时链接到静态文件.我已经看到了一些关于Symfony的类似问题/答案,但它们涉及YML路由文件,我不与Silex一起使用.
我的情况
我在/ docs文件夹中有一些文件.登录用户可以上传新的pdf文件(因此,我不知道所有文件名将会是什么;它们会不断变化).
我的意图
我需要能够链接到这些PDF文件,以便点击链接某处将打开www.myurl.com/docs/myfile.pdf.
问题
由于silex中的路由系统,它将url视为路由(显然)并抛出Page Not Found错误.
提前感谢您的任何反馈!