小编Chr*_*sNY的帖子

Laravel Blade - @ slot/@组件对@include的优势?

Laravel 5.4 Blade引入了组件和插槽的概念 - 但我看不出它们在传统的@include上添加了什么.据我所知,使用组件/插槽,您可以:

在模板component-tpl.blade.php中:

<div class='container'>
  <h1>{{$slot1}}</h1>
  <h2>{{$slot2}}</h2>
</div>
Run Code Online (Sandbox Code Playgroud)

使用页面模板中的插槽,您可以:

@component('component-tpl')
  @slot('slot1')
    The content of Slot 1
  @endslot
  @slot('slot2')
    The content of Slot 2
  @endslot
@endcomponent
Run Code Online (Sandbox Code Playgroud)

与旧版本相比,它提供了哪些功能:

@include('component-tpl',['slot1'=>'The content of Slot 1',
'slot2'=>"The content of Slot 2"])
Run Code Online (Sandbox Code Playgroud)

使用完全相同的'component-tpl.blade.php'刀片模板?

我错过了什么?感谢您的任何见解.

克里斯

php laravel blade laravel-blade laravel-5.4

32
推荐指数
4
解决办法
9409
查看次数

如何在参数化的PHP PDO插入中指定'default'?

我现在提出了一个解决方法,但我很想将来参考......

如果将mysql表列定义为NOT NULL但具有缺省值,则在插入语句中未指定列名时将插入该缺省值,或者如果指定关键字DEFAULT作为值,则将插入该缺省值.如果您在NOT NULL列上专门使用NULL作为值,即使该列具有默认值,它也会尝试插入NULL并抛出错误.

但有没有办法将DEFAULT关键字指定为参数化INSERT语句中的值?我不想只是省略insert语句中的列,因为我想对多个数据集使用相同的语句,其中一些实际上有该列的数据.

php mysql pdo

6
推荐指数
1
解决办法
1207
查看次数

Force Composer更新包

我开发了一个定制的laravel包并把它放在GitHub上.我把它放在composer.json(下面的代码)中,安装得很好.

我还没有版本信息,因为它仍处于开发阶段.当我更改我的包(在一个单独的目录中)时,我提交并将更改推送到GitHub仓库.

当我运行'composer update'时,我得到"无需安装或更新".如果我从供应商目录中删除包并更新,那么我的包是从GitHub仓库安装的,包含最新的更改.

但我希望能够从repo中提取/强制进行最新的更改,而不是先从我的vendor目录中删除它,因为我对该包有其他依赖,如果我删除它,我会从artisan clear-compiled那里得到错误类没有定义(因为它们是在我删除的供应商包中定义的......)

我的顶级composer.json的相关部分是:

  "repositories": [{
    "type": "package",
    "package": {
      "name": "myrepo/MyExtension",
      "version": "dev-master",
      "source": {
        "url": "https://github.com/myrepo/MyExtension.git",
        "type": "git",
        "reference": "master"
      },
      "autoload": {
        "psr-4": {
          "MyExtension\\": "src/Extensions/"
        }
      }
    }
  ],
  "require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "myrepo/MyExtension": "dev-master"
  },
Run Code Online (Sandbox Code Playgroud)

php laravel composer-php

6
推荐指数
1
解决办法
1万
查看次数

您如何等待所有异步调用在Java中完成?

从概念上讲非常简单。我们有一个庞大的旧版Java网站,它不使用线程/异步。登录需要花费很多时间,因为它对不同的微服务进行了十二个调用,但一次都同步进行:每个调用都等待另一个完成,然后再进行下一个调用。但是,API调用中的任何一个都不取决于其他任何一个的结果。

但是我们确实需要获得所有结果并将其合并,然后再继续。看起来确实很明显,我们应该能够并行进行这十二个调用,但是要等到它们全部完成后,才能在接下来的步骤中使用它们的数据。

因此,在调用之前和之后,一切都是同步的。但是,最好将它们各自并行,异步(或只是并行)发送出去,然后我们仅受单个最慢的调用的限制,而不是所有调用的总顺序时间。

我读过Java 8围绕着这套很棒的新操作CompletableFuture。但是我还没有在任何地方解释我的用法。我们不希望结果有希望-我们很高兴等到它们全部完成然后继续。JS具有Promise.all(),但即使如此,它也会返回一个承诺。

我能想到的就是在进行异步调用后稍等一下,直到我们得到所有结果后才继续。显然是疯了。

我在这里想念什么吗?因为对我来说似乎很明显,但是似乎没有人对此有问题-否则这种方法是如此简单,没人问,我只是不明白。

java parallel-processing asynchronous java-8 completable-future

5
推荐指数
1
解决办法
2081
查看次数

如何将空数组从 HTML Form Post 提交到 PHP

我刚刚意识到 - 我不知道如何将一个空数组从 HTML 表单发布到 PHP。我可以发布大小为 1 或更大的数组,但是有什么方法可以发布一个空数组吗?我的意思是,你可以有:

<form>
  <input type='hidden' name='items[0]' value='Value Item 1' />
 <input type='hidden' name='items[1]' value='Value Item 2' />
</form>
Run Code Online (Sandbox Code Playgroud)

它给出了一个大小为 2: 的数组:$_POST['items'] === ["Value Item 1", "Value Item 2"]但是有没有办法将一个空数组作为 $_POST 键的值传递?也就是说,我知道我可以 make $POST['items'] === '',但是一个空数组 ( []) ?

具体用例是:我有一个一对多的形式,比如一个带有物品的购物车。该表单由数据库中的现有“项目”填充,但可以添加或删除项目,这些项目位于项目数组中。项目数组被索引 - 如果添加新项目,它们将保存到数据库中;如果项目被删除,它们将从数组中删除并从数据库中删除。

所有这些都可以正常工作 - 除非从表单中删除所有项目,在这种情况下不会传递“项目”键。

我发现了一个非常好的解决方法,即在表单顶部放置一个隐藏的输入“items”=null,因此即使没有项目也会传递键,然后在 PHP 中,如果“items”键是'' 我将它转换为一个空数组 - 所以一切正常。我只是在理论上很好奇是否可以发布一个空数组。不知道为什么这被认为是不合适的 - 希望解释有所帮助。

至于为什么我要检查密钥是否存在——我使用相同的通用代码来处理来自不同表单的输入——所以,如果用户在没有指定商品的情况下更改了购物车上的地址,则不应删除这些商品只是因为没有“项目”键。

为了进一步澄清,我实际上并不是在构建“购物车”——我正在构建一个抽象框架,该框架支持将一对多 POST 映射到 Eloquent 一对多关系。POST 中具有空值的任何字段都将从对象中删除 - 但不在 POST 中的任何字段/键不会在基础数据库中删除或修改。

重点是,我正在构建一个通用工具集 - 不仅仅是试图让一个函数来处理一种表单。

html php arrays post

4
推荐指数
1
解决办法
7544
查看次数

使用空格扩展 bash 变量作为脚本中 bash 函数的参数

并不重要 - 但我正在尝试更深入地了解 bash 脚本,这让我发疯!

我的目标 - 在 bash 脚本中:

  • 定义一个接受参数的函数
  • 使用函数名称和参数设置 bash 变量 (CMD)
  • 通过$CMD执行

如果 $args 中没有空格,没问题 - 但这里有一个最小的脚本来说明:

#!/bin/bash
function tstArgs () {
    echo "In tstArgs: ArgCnt:$#; Arg1:[$1]; Arg2:[$2]"
}
ARG1=today
ARG2=tomorrow
CMD1="tstArgs $ARG1 $ARG2"
$CMD1 #Output - As Desired: In tstArgs: ArgCnt:2; Arg1:[today]; Arg2:[tomorrow]

ARGWS1="'today with spaces'"
ARGWS2="'tomorrow with spaces'"
CMD2="tstArgs $ARGWS1 $ARGWS2"
$CMD2 #Output: In tstArgs: ArgCnt:6; Arg1:[today]; Arg2:[with]

#The dream:
ARGARR=($ARGWS1 $ARGWS2)
CMD3="tstArgs ${ARGARR[@]}"
$CMD3 #Output: In tstArgs: ArgCnt:6; Arg1:[today]; Arg2:[with]
#ETC, ETC, ETC... …
Run Code Online (Sandbox Code Playgroud)

parameters bash shell parameter-expansion

3
推荐指数
1
解决办法
359
查看次数