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'刀片模板?
我错过了什么?感谢您的任何见解.
克里斯
我现在提出了一个解决方法,但我很想将来参考......
如果将mysql表列定义为NOT NULL但具有缺省值,则在插入语句中未指定列名时将插入该缺省值,或者如果指定关键字DEFAULT作为值,则将插入该缺省值.如果您在NOT NULL列上专门使用NULL作为值,即使该列具有默认值,它也会尝试插入NULL并抛出错误.
但有没有办法将DEFAULT关键字指定为参数化INSERT语句中的值?我不想只是省略insert语句中的列,因为我想对多个数据集使用相同的语句,其中一些实际上有该列的数据.
我开发了一个定制的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) 从概念上讲非常简单。我们有一个庞大的旧版Java网站,它不使用线程/异步。登录需要花费很多时间,因为它对不同的微服务进行了十二个调用,但一次都同步进行:每个调用都等待另一个完成,然后再进行下一个调用。但是,API调用中的任何一个都不取决于其他任何一个的结果。
但是我们确实需要获得所有结果并将其合并,然后再继续。看起来确实很明显,我们应该能够并行进行这十二个调用,但是要等到它们全部完成后,才能在接下来的步骤中使用它们的数据。
因此,在调用之前和之后,一切都是同步的。但是,最好将它们各自并行,异步(或只是并行)发送出去,然后我们仅受单个最慢的调用的限制,而不是所有调用的总顺序时间。
我读过Java 8围绕着这套很棒的新操作CompletableFuture。但是我还没有在任何地方解释我的用法。我们不希望结果有希望-我们很高兴等到它们全部完成然后继续。JS具有Promise.all(),但即使如此,它也会返回一个承诺。
我能想到的就是在进行异步调用后稍等一下,直到我们得到所有结果后才继续。显然是疯了。
我在这里想念什么吗?因为对我来说似乎很明显,但是似乎没有人对此有问题-否则这种方法是如此简单,没人问,我只是不明白。
java parallel-processing asynchronous java-8 completable-future
我刚刚意识到 - 我不知道如何将一个空数组从 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 中的任何字段/键不会在基础数据库中删除或修改。
重点是,我正在构建一个通用工具集 - 不仅仅是试图让一个函数来处理一种表单。
并不重要 - 但我正在尝试更深入地了解 bash 脚本,这让我发疯!
我的目标 - 在 bash 脚本中:
如果 $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) php ×4
laravel ×2
arrays ×1
asynchronous ×1
bash ×1
blade ×1
composer-php ×1
html ×1
java ×1
java-8 ×1
laravel-5.4 ×1
mysql ×1
parameters ×1
pdo ×1
post ×1
shell ×1