我正在使用SonataMediaBundle和SonataAdminBundle以及Symfony 2.3.
当我尝试通过Sonata Admin界面上传图像时:
app_dev.php/admin/sonata/media/media/create
)app_dev.php/admin/sonata/media/media/create?provider=sonata.media.provider.image&context=default
)image.jpg
文件并单击"创建"Item "image.jpg" has been successfully created.
事实上:
web\uploads\media\default\0001\01
我有我的图像文件和3个拇指media__media
DB表中我有相应的行web/uploads/media/default/0001/01/
Firefox时,我可以看到我的图像但是:
app_dev.php/admin/sonata/media/media/3/edit?provider=sonata.media.provider.image&context=default
)对于文件,情况更糟:
app_dev.php/admin/sonata/media/media/create
)app_dev.php/admin/sonata/media/media/create?provider=sonata.media.provider.file&context=default
)document.zip
文件并单击"创建"这会产生错误500 : The file "" does not exist
. 并且DB中没有创建新行.
一块解决方案
对于图像问题,我注意到奏鸣曲管理员看的路径不是很好的:我看着它: http://myserver/uploads/media/default/0001/01/c35f187f1b405f4bfba8b962d83e5bbdccff54f9.jpeg
代替 http://myserver/myproject/web/uploads/media/default/0001/01/c35f187f1b405f4bfba8b962d83e5bbdccff54f9.jpeg
显然,这是由于config.yml的这一部分(如SonataMedia文档中所定义):
sonata_media
cdn:
server:
path: /uploads/media
Run Code Online (Sandbox Code Playgroud)
我改为:
sonata_media
cdn:
server:
path: /myproject/web/uploads/media
Run Code Online (Sandbox Code Playgroud)
它有效.但我不认为在那里硬编码是个好主意.我想有一个很好的理由为什么它在Sonata Doc中以这种方式编写,不是吗?
我的修改是否正确?如果没有,我该怎么办?
无论如何,它无法解决我的文件上传问题!关于这一点有什么想法吗?
我正在尝试结合 Doctrine 的扩展 Blameable 和 Softdeleteable:当我执行时$em->remove($myEntity);
,我想获取字段deleted
并deletedBy
相应更新。
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @Gedmo\SoftDeleteable(fieldName="deleted", timeAware=false)
*/
[...]
/**
* DateTime of softdeletion
* @var \DateTime
*
* @ORM\Column(name="deleted", type="datetime", nullable=true)
* @Assert\DateTime()
*/
private $deleted;
/**
* Softdeleted by
* @var MyProject\UserBundle\Entity\User $deletedBy
*
* @Gedmo\Blameable(on="change", field="deleted")
* @ORM\ManyToOne(targetEntity="MyProject\UserBundle\Entity\User")
* @ORM\JoinColumn()
*/
private $deletedBy;
Run Code Online (Sandbox Code Playgroud)
Blameable(on="create")
我对created/createdBy(使用)和updated/updatedBy(使用)有类似的配置Blameable(on="update")
。
更奇怪的是,如果我用下面的代码替换上面的代码,该字段deletedBy
就会正确更新:
/**
* Softdeleted by
* @var MyProject\UserBundle\Entity\User $deletedBy
*
* @Gedmo\Blameable(on="update")
* @ORM\ManyToOne(targetEntity="MyProject\UserBundle\Entity\User")
* …
Run Code Online (Sandbox Code Playgroud) 我正在使用Doctrine和Symfony,实体生成器在实体的构造函数中初始化集合.例如:
/**
* @var MyProject\MyBundle\Entity\Foo
*
* @ORM\ManyToMany(targetEntity="MyProject\MyBundle\Entity\Foo")
*/
private $foos;
public function __construct() {
$this->foos = new \Doctrine\Common\Collections\ArrayCollection();
}
Run Code Online (Sandbox Code Playgroud)
我可以阅读Doctrine的最佳实践 ......这样做是一种很好的做法.
但问题是:兴趣是什么?
如果我在构造函数中删除这一行,我没有看到任何变化.我猜它是懒加载的,但性能下降是否足以花时间编写app/console doctrine:generate:entities
构造函数(如果构造函数已经存在,命令不会使用新的ArrayCollection来提供构造函数,所以我必须手动执行) .
如果这样做真的更好,我应该为所有关系做什么,还是只做nullable=false
一个?
想象一下Car
OneToMany中的实体Wheel
(不可为空)和OneToMany Passenger
(可为空).我应该只$wheels
对两者进行初始化吗?为什么?
我正在开发一个带有RStudio的自定义R包,用roxygen2记录.
请考虑这个功能:
#' Get "test"
#'
#' @return String
#' @export
#'
#' @examples getTest()
getTest <- function() {
return("test")
}
Run Code Online (Sandbox Code Playgroud)
如果我R CMD check
使用上面编写的函数文档运行,一切都很好,check
成功传递.
现在,如果我删除@export
(因为我不希望从包外部看到此函数),我收到以下错误:
* checking examples ... ERROR
Running examples in 'MyPackageName-Ex.R' failed
The error most likely occurred in:
> ### Name: getTest
> ### Title: Get "test"
> ### Aliases: getTest
>
> ### ** Examples
>
> getTest()
Error: could not find function "getTest"
Execution halted
Run Code Online (Sandbox Code Playgroud)
看起来函数的测试@examples
是从包外面运行的!?
如何测试非导出函数的示例?
我正在尝试使用SF2/Doctrine Querybuilder为搜索字段构建请求.
在我的搜索字段中,我希望能够键入多个关键字,并获得与所有关键字匹配的结果.
所以,这是我的代码(在存储库中):
foreach ($keywordsArray as $keyword)
{
$qb->andWhere($qb->expr()->orX(
$qb->expr()->like('p.name', ':keyword'),
$qb->expr()->like('p.surname', ':keyword')
));
$qb->setParameter('keyword', '%'.$keyword.'%');
var_dump($keyword);
}
Run Code Online (Sandbox Code Playgroud)
问题:参数'keyword'始终是$ keywordsArray的最后一个元素...
例如,当我在搜索字段中输入"John Smith"时,我有:
$ keywordsArray
array (size=2)
0 => string 'John' (length=4)
1 => string 'Smith' (length=5)
Run Code Online (Sandbox Code Playgroud)
循环中的var_dump($ keyword)告诉我$ keyword = John然后$ keyword = Smith.
但是,Symfony profiler告诉我执行的查询是:
SELECT [...]
FROM [...]
WHERE (l0_.name LIKE '%Smith%' OR a1_.surname LIKE '%Smith%')
AND (l0_.name LIKE '%Smith%' OR a1_.surname LIKE '%Smith%')
Run Code Online (Sandbox Code Playgroud)
我期待的是:
SELECT [...]
FROM [...]
WHERE (l0_.name LIKE '%John%' OR a1_.surname …
Run Code Online (Sandbox Code Playgroud) 我想聚合数据表的行,但是aggragation函数取决于列的名称.
例如,如果列名是:
variable1
或者variable2
,然后应用该mean()
功能.variable3
,然后应用该max()
功能.variable4
,然后应用该sd()
功能.我的数据表总是有一datetime
列:我想按时间聚合行.但是,"数据"列的数量可以变化.
我知道如何使用相同的聚合函数(例如mean()
)对所有列执行此操作:
dt <- dt[, lapply(.SD, mean),
by = .(datetime = floor_date(datetime, timeStep))]
Run Code Online (Sandbox Code Playgroud)
或者仅针对列的子集:
cols <- c("variable1", "variable2")
dt <- dt[ ,(cols) := lapply(.SD, mean),
by = .(datetime = floor_date(datetime, timeStep)),
.SDcols = cols]
Run Code Online (Sandbox Code Playgroud)
我想做的是:
colsToMean <- c("variable1", "variable2")
colsToMax <- c("variable3")
colsToSd <- c("variable4")
dt <- dt[ ,{(colsToMean) := lapply(.SD???, mean),
(colsToMax) := lapply(.SD???, max),
(colsToSd) := lapply(.SD???, sd)}, …
Run Code Online (Sandbox Code Playgroud) 请考虑以下输入数据:
41
和54
).T1
和T2
)的压力.示例数据:
data <- data.table(
time = as.POSIXct(paste("2017-01-01", c("11:59", "12:05", "12:02", "12:03", "14:00", "14:01", "14:02", "14:06")), tz = "GMT"),
instrumentId = c(41, 54, 41, 54, 41, 54, 41, 54),
tank = c("T1", "T1", "T2", "T2", "T1", "T1", "T2", "T2"),
pressure = c(25, 24, 35, 37.5, 22, 22.2, 38, 39.4))
Run Code Online (Sandbox Code Playgroud)
我想计算每个罐的仪器41和仪器54测量的压力之间的差异,假设在20分钟内测量的值属于同一样品.
理想情况下,差异的时间戳将是两个比较值的时间戳的平均值.
这是一个目前使用的脚本:
## Calculate difference of time between 2 consecutive lines
data <- data[, timeDiff := difftime(time, shift(time, type …
Run Code Online (Sandbox Code Playgroud) 我正在使用SF2和Doctrine2.
我有一个与实体Wheel
具有ManyToOne关系的实体Car
.
我想在服务中做这样的事情:
$car_id = 1;
$wheel = new Wheel();
$wheel->setCarId($car_id);
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望能够链接Wheel
并且Car
只使用Car的id,而无需获得完整的对象(因为我不需要它:我只需要id而且我已经拥有它).
我怎样才能做到这一点?
我有一个为一个区间给出的理论值的data.table:
firstDate lastDate theoric
2017-01-01 2017-01-03 10
2017-01-05 2017-01-25 20
2017-02-01 2017-08-31 30
Run Code Online (Sandbox Code Playgroud)
另一方面,我有准时的测量值:
datetime measured
2017-01-02 11
2017-01-08 22
2017-01-09 19
2017-01-26 25
2017-03-02 32
Run Code Online (Sandbox Code Playgroud)
对于每个测量值,我希望得到相应的理论值(其间隔包括测量日期的值).
注意:1.理论间隔不能重叠.2.如果测量值不在任何恐怖间隔内,则返回NA.
预期产量:
datetime measured theoric
2017-01-02 11 10
2017-01-08 22 20
2017-01-09 19 20
2017-01-26 25 NA
2017-03-02 32 30
Run Code Online (Sandbox Code Playgroud)
可重复的数据集:
theoricDt <- structure(list(firstDate = structure(c(1483228800, 1483574400, 1485907200), class = c("POSIXct", "POSIXt"), tzone = "GMT"), lastDate = structure(c(1483401600, 1485302400, 1504137600 ), class = c("POSIXct", "POSIXt"), tzone = "GMT"), theoric = c(10, 20, 30)), …
Run Code Online (Sandbox Code Playgroud) 当用户将鼠标悬停在文本链接上时,我想显示一个包含多个按钮的弹出框
我遇到的问题是当光标从触发它的链接中时(例如,当用户移动以选择其中一个按钮时),我当前使用的默认 Bootstrap 弹出窗口被解除
这个jsFiddle是我尝试做的一个例子..原理是:当链接(#example
)悬停时显示弹出.popover
框,当弹出框()未悬停时隐藏弹出框。
但这不起作用,尽管我确定 BS popover 被封装在一个.popover
类中(我使用 FF 开发调试工具进行了检查)。
有趣的是:它适用于另一个 div!如果我更换
$('.popover').mouseleave(function(){
$('#example').popover('hide');
});
Run Code Online (Sandbox Code Playgroud)
这样
$('.square').mouseleave(function(){
$('#example').popover('hide');
});
Run Code Online (Sandbox Code Playgroud)
当不再悬停在蓝色方块上时,弹出框确实被隐藏了。
为什么不工作.popover
?
考虑以下内容data.table
:
DT <- data.table(year = c(2011,2012,2013,2011,2012,2013,2011,2012,2013),
level = c(137,137,137,136,136,136,135,135,135),
valueIn = c(13,30,56,11,25,60,8,27,51))
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
DT <- data.table(year = c(2011,2012,2013,2011,2012,2013,2011,2012,2013),
level = c(137,137,137,136,136,136,135,135,135),
valueIn = c(13,30,56, 11,25,60, 8,27,51),
valueOut = c(12,27.5,58, 9.5,26,55.5, NA,NA,NA))
Run Code Online (Sandbox Code Playgroud)
换句话说,我要计算操作(valueIn[level] - valueIn[level-1]) / 2
,根据year
.例如,第一个值的计算如下:(13+11)/2=12
.
目前,我使用for
循环执行此操作,其中我data.table
为每个循环创建子集level
:
levelDtList <- list()
levels <- sort(DT$level, decreasing = FALSE)
for (this.level in levels) {
levelDt <- DT[level == this.level]
if (this.level == min(levels)) {
valueOut <- NA
} else …
Run Code Online (Sandbox Code Playgroud)