让我们说我们正在使用Laravel的查询构建器:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个SQL的等价物:
really_long_table_name AS short_name
Run Code Online (Sandbox Code Playgroud)
当我必须输入大量的选择和数据时,这将特别有用(或者通常我也会在select的列别名中包含别名,并且它会在结果数组中使用).没有任何表别名,我会有更多的输入,一切都变得不那么可读.在laravel docs中找不到答案,有什么想法吗?
我正在使用表单请求验证方法来验证laravel 5中的请求.我想用表单请求验证方法添加我自己的验证规则.我的请求类在下面给出.我想添加自定义验证numeric_array和字段项.
protected $rules = [
'shipping_country' => ['max:60'],
'items' => ['array|numericarray']
];
Run Code Online (Sandbox Code Playgroud)
我的cusotom功能如下
Validator::extend('numericarray', function($attribute, $value, $parameters) {
foreach ($value as $v) {
if (!is_int($v)) {
return false;
}
}
return true;
});
Run Code Online (Sandbox Code Playgroud)
如何在laravel5中使用此验证方法进行表单请求验证?
我在我的公共网站上使用Laravel的CSRF保护.但是,由于Laravel使用会话来维护这一点,我担心用户可能会离开他们的计算机并返回他们之前打开的页面,但却发现ajax请求不起作用.ajax请求不起作用,因为会话已超时(并且令牌不再验证?).如果这些用户"登录"了用户,那么我可以简单地将他们重定向回登录页面.由于它们是公共用户,因此用户被迫刷新页面以使其恢复工作(笨拙).
或者我错了吗?是否仍然会通过Laravel对CSRF令牌进行验证(即使会话超时后,页面仍将通过令牌发送......但是Laravel会用它做什么?).最佳解决方案是使令牌部分基于时间戳,以便我们可以将令牌到期限制与会话时间限制区分开来.我可以让我的CSRF令牌持续2天(因此只有那些离开2天的用户才能返回死页).
最后,这让我想到了一个问题:Laravel框架中的具体代码在哪里处理?我正在尝试找到它.另外,我可以轻松地替换掉,或者我留下来创建我自己的版本csrf_token();
输出到我的页面然后我需要创建自己的路由过滤器来配合它.
您可以在Laravel的最新文档中看到任务调度,但Lumen的文档没有提到这一点.但是,看起来Lumen的Console Kernel文件就像Laravel一样有一个调度方法.调度在两者中是否相同,或者在Lumen中进行调度的注意事项是什么?
我正在尝试找一篇关于DDD实体如何处理错误的好文章/示例(以及将被视为异常错误和什么不会错误)以及它们如何将它们传递到调用应用程序层(通常包含事务中的操作)那将需要回滚).
目前我正在考虑将所有会破坏聚合事务(例如验证)的错误视为异常.这样我就可以在"catch"块中回滚事务.例如:
SomeApplicationService:
// start transaction here
// ...
try
{
$user = $userRepository->userOfId($id);
$user->doSomething();
$user->doSomethingElse(); // <-- imagine an error thrown here
$userRepository->save($user);
}
catch (CustomFriendlyForUIException $e)
{
// Custom Friendly for UI error
// Rollback transaction and add error/message to UI payload DTO
// ...
}
catch (AnotherCustomException $e)
{
// Not friendly to UI, so use general error message for UI
// Rollback transaction and add error/message to UI payload DTO
// ...
}
catch (Exception $e) …
Run Code Online (Sandbox Code Playgroud) 让我们保存我有一个.Vue
组件,我从某个地方抓起Github.我们称之为CompB,我们将在那里为蓝色标题添加一个CSS规则集:
CompB.Vue(我不拥有的依赖项,可能是从Github中提取的)
<template>
...
</template>
<script>
...
</script>
<style lang="scss" scoped>
.compb-header {
color: blue;
}
</style>
Run Code Online (Sandbox Code Playgroud)
我计划将CompB嵌入到我自己的项目的CompA中.现在我有什么选择来覆盖范围规则?
在Lumen中,我可以在我的刀片模板中执行此操作:
{{ url('/css/app.css') }}
Run Code Online (Sandbox Code Playgroud)
在Laravel我能做到
{{ asset('/css/app.css') }}
Run Code Online (Sandbox Code Playgroud)
我必须在Lumen中使用url helper吗?
jQuery 的 mouseleave 似乎会在任何覆盖元素上触发。我不希望这些覆盖元素被视为“超出”我的目标区域。这是一个使用 jQueryUI 中的日期选择器的简单示例:
$("#datepicker").datepicker({});
$(".wrapper")
.mouseenter(function(){
$("#status").html("Status: Mouse is INSIDE");
})
.mouseleave(function(){
$("#status").html("Status: Mouse is OUTSIDE");
});
Run Code Online (Sandbox Code Playgroud)
请注意,当鼠标悬停在日期选择器上时,将触发 mouseleave。对于这个日期选择器示例,有什么好的解决方案可以防止这种情况发生?对于我未来可能添加的涵盖目标的任何元素,什么是好的解决方案?
在PhpStorm中,什么是折叠或扩展文件中所有注释(doc)块的快速方法?
在这里的文档中它说:
Folding and expanding code blocks works for entire classes, inner and anonymous classes, method bodies, import lists, comments, HTML and XML tags, closures and language injections.
然后进一步说:
If you hold the Alt modifier and click a toggle button in the gutter, the code block will be collapsed or expanded recursively, i.e. all sub-blocks within the parent block will also be collapsed or expanded.
但是我没看到这是如何Alt modifer
工作的?我按住Alt然后单击切换按钮,只有该块单独折叠.我在顶级doc块中以及属性/方法doc块中尝试了这个.我错过了什么吗?
#1.验证表单上的EmailAddress
我有一个后端表单类,其emailAddress
属性具有验证逻辑,以便我可以将错误消息返回给用户.我使用类似的方式验证所有表单输入:
$form->fillWith($request->input());
if($form->validate()){
$form->dispatch($command); // if synchronous, form takes command's messageBag
}
return response($form->getMessageBag()->toJson());
Run Code Online (Sandbox Code Playgroud)
#2.在命令处理程序中验证EmailAddress值对象
我有一个命令处理程序,它将获取原始字符串电子邮件并创建一个值对象.如果电子邮件无效,则value对象将在创建时抛出异常:
public function handle($command){
try {
$emailAddress = new ValueObjects\EmailAddress($command->emailAddress);
// create more value objects...
// do something else with the domain...
} catch (DomainException $e) {
$this->messageBag->add("errors", $e->getMessage());
} catch (\Exception $e) {
$this->messageBag->add("errors", "unexpected error");
}
return $this->messageBag;
}
Run Code Online (Sandbox Code Playgroud)
在#1中,我希望在发送命令之前尽早捕获验证.但是在#2中,当我构建VO时,重复验证逻辑.
我遇到的问题:
所以我的问题是,我应该创建一些验证器对象,我的表单验证和VO可以共享/利用吗?或者如何捕获表单和值对象之间的重复验证问题?