小编Hap*_*der的帖子

在Laravel Blade模板中循环嵌套数组

我有以下代码:

@foreach($data['daily'] as $date => $dailyData)
    <tr>
        <td>{{$date}}</td>
        @foreach($dailyData as $key => $value)
            <td>
                <span>{{$value}}</span>
                <strong>{{$data['another_index'][$date][$key]}}</strong>
            </td>
        @endforeach
    </tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)

这让我错了

[ErrorException]
Undefined index: date
Run Code Online (Sandbox Code Playgroud)

代码执行时.实际上我有价值观another_index,我可以打印它.

在此先感谢您的帮助.

[another_index] => Array
        (
            [2016-03-15] => Array
                (
                    [key] => 100.00%
                    [key1] => 0.00%
                    [key2] => 0.00%
                )

            [2016-03-14] => Array
                (
                    [key] => 10.00%
                    [key1] => 20.00%
                    [key2] => 30.00%
                )
Run Code Online (Sandbox Code Playgroud)

php laravel blade laravel-5.2 laravel-blade

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

如何在声明性 Jenkins 管道中添加 sidecar MySQL?

我正在设置一个 PHP 构建系统,需要运行一个本地 MySQL 实例来执行测试。目前我正在使用声明性管道语法并使用 docker。是否可以在声明式语法中将 MySQL 作为 sidecar 运行?

如果没有任何其他方法来运行 MySQL 代理以及自定义 docker 映像并执行迁移?

continuous-integration jenkins jenkins-pipeline

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

使用 docker 在 Jenkins 中运行多个边车

我正在运行一个 mysql sidecar,如下所示:

docker.image("mysql:5.6").withRun("-e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e", '--lower_case_table_names=1') { c ->
  docker.image("mysql:5.6").inside("--link ${c.id}:mysql") {

    /* Wait until MySQL service is up */
    sh "while ! mysqladmin ping -u root -h mysql -p ; do sleep 1; done"
    sh "mysql -u root -h mysql -p --batch -e 'show databases;'"
  }
  dockerRunArgs.add("--link ${c.id}:mysql")

  docker.build(image, dockerBuildArgs.join(' ')).inside(dockerRunArgs.join(' ')) {

    // the actual building, archiving, deployment, etc, stages go here
      withCredentials([string(credentialsId: 'CREDENTIALID', variable: 'VARIABLE')]) {
        stage('Build') {
          sh 'chmod 777 ./build.sh'
          sh "./build.sh"
        }
        stage('DB …
Run Code Online (Sandbox Code Playgroud)

jenkins docker jenkins-pipeline

5
推荐指数
0
解决办法
947
查看次数

凭证必须是带有 SQS 的 PHP SDK 上的 Aws\\Credentials\\CredentialsInterface 错误的实例

SQS我正在尝试使用 php SDK从 AWS 中删除一条消息。我有以下配置。

$sqsClient = new SqsClient([
            'version' => '2012-11-05',
            'region'  => 'us-east-1',
            'credentials' => [
                'key' => KEY,
                'secret' => SECRET
            ]
        ]);
Run Code Online (Sandbox Code Playgroud)

然后我尝试删除如下:

$sqsClient->deleteMessage([
                'QueueUrl' => quque-url
                'ReceiptHandle' => handle
            ]);
Run Code Online (Sandbox Code Playgroud)

我在初始化时收到以下错误:

Credentials must be an instance of Aws\\Credentials\\CredentialsInterface, an associative array that contains \"key\", \"secret\", and an optional \"token\" key-value pairs, a credentials provider function, or false."

我使用的凭据是正确的。在我没有传递配置之前,也出现了同样的错误。如何解决这个问题?

php amazon-sqs amazon-web-services aws-php-sdk

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

PSR4自动加载没有作曲家

我在一个项目中有一个包,它使用composer和composer.json条目自动加载如下:

 "autoload": {
      "psr-4": {
        "CompanyName\\PackageName\\": "packages/package-folder/src/"
    }
  }
Run Code Online (Sandbox Code Playgroud)

现在我将其复制到另一个不使用composer的项目中.我怎么能在那里自动加载这个相同的包?

php autoload composer-php

4
推荐指数
2
解决办法
6692
查看次数

Jenkins:无法运行程序"docker":error = 2,没有这样的文件或目录

我在我的本地机器上安装了Jenkins,它在MacOS High Sierra上运行并安装了docker.我正在尝试运行一个使用docker的简单管道示例.我在管道中添加了以下行:

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'node --version'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从WebGUI,我现在点击构建,它失败了.控制台输出显示错误如下:

java.io.IOException: error=2, No such file or directory
 at java.lang.UNIXProcess.forkAndExec(Native Method)
 at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
 at java.lang.ProcessImpl.start(ProcessImpl.java:134)
 at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
 at hudson.Proc$LocalProc.<init>(Proc.java:249)
 at hudson.Proc$LocalProc.<init>(Proc.java:218)
 at hudson.Launcher$LocalLauncher.launch(Launcher.java:929)
 at hudson.Launcher$ProcStarter.start(Launcher.java:449)
 at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:296)
 at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:277)
 at org.jenkinsci.plugins.docker.workflow.client.DockerClient.launch(DockerClient.java:274)
 at org.jenkinsci.plugins.docker.workflow.client.DockerClient.version(DockerClient.java:246)
 at org.jenkinsci.plugins.docker.workflow.WithContainerStep$Execution.start(WithContainerStep.java:141)
 at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:229)
 at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153)
 at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
 at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
 at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
Caused: java.io.IOException: Cannot run program …
Run Code Online (Sandbox Code Playgroud)

java jenkins docker

4
推荐指数
3
解决办法
3858
查看次数

Docker 容器内的 Git 权限被拒绝

我使用 shell 脚本作为 Jenkinsfile 的一部分来运行数据库迁移。shell 脚本在文件中设置条目后尝试克隆存储库known_hosts。我正在做以下事情:

    #!/bin/bash

    set -e

    # Workaround old docker images with incorrect $HOME
    # check https://github.com/docker/docker/issues/2968 for details
    if [ "${HOME}" = "/" ]
    then
      export HOME=$(getent passwd $(id -un) | cut -d: -f6)
    fi

    mkdir -p ~/.ssh

    echo '
    github.com ssh-rsa KEY
  ' >> ~/.ssh/known_hosts

    git clone git@github.com:Organization/migrations.git /tmp/database-migrations

   Execute Migration
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误

Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题呢?

顺便说一句,当我检查已知的主机文件时,我发现文件中已添加一个条目,其 IP192范围为(本地 IP)。这是造成问题的原因吗?

git ssh shell jenkins docker

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

如何使用工厂模式解决多个第三方api

我一直在研究基于 PHP 中 Laravel 框架的 API,但这不是特定于该语言的。API 中使用了许多第三方 API,并且有许多多种配置。所以我想创建一个 HTTP 客户端工厂类,在代码中,我打算为此创建一个对象并将 API 名称作为参数传递。主要问题是如何根据特定 API 的名称将其解析为各种类?那就是当我给谷歌时,它需要初始化谷歌类并返回谷歌API客户端,对于其他API,它应该用相应的客户端响应。

我有一个困惑,比如这是工厂模式的正确用例,如果不是,是否有任何其他模式或标准方法可以做到这一点,而不是分别调用每个 API 客户端。?

design-patterns factory-pattern

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

Mongo DB聚合不起作用

我在mongo集合(datacollection)中有以下数据:

{
  "_id": ObjectId("54980efef7db7d9b018d375b"),
  "sub_id": "1234567890",
  "points": "10",
  "oid": "1",
  "name": "test",
  "app": "e53abc6d12fea63c80e4c2e1d49e",
  "source": "mysource",
  "product_name": "browser",
  "added": ISODate("2014-12-22T12:30:54.618Z"),
  "added_human": "2014-12-22 06:30:54",
  "checked": true
}
Run Code Online (Sandbox Code Playgroud)

我实际上需要找出按日期分组的点数之和.SQL查询将如下所示:SELECT DATE(已添加)为point_date,SUM(points)AS total_points FROM mytable WHERE在'from'AND'与'GROUP BY DATE(已添加)之间添加.

所以我使用以下聚合:

db.datacollection.aggregate(
    { 
        $match:{
            "added" : {$gte:ISODate("2014-12-01"), $lt:ISODate("2014-12-25")},   
            "source":"mysource"  
        },   
        $group : {
            "_id" : { month: { $month: "$added" }, day: { $dayOfMonth: "$added" }, year: { $year: "$added" } },
            "total_points":{$sum:"$points"}   
        }  
    }  
);
Run Code Online (Sandbox Code Playgroud)

但这显示出来了

"errmsg" : "exception: A pipeline stage specification object must …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

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

Angular 表单验证如何在提交时显示错误消息

我有一个表格如下:

<form [formGroup]="editProfileForm">
    <input type="text" id="name" class="form-control" placeholder="First" formControlName="firstName [(ngModel)]="profileDetails.first_name">
    <small class="text-danger" [hidden]="editProfileForm.controls['firstName'].valid || (editProfileForm.controls['firstName'].pristine && !submitted)">First name Required</small>
    <input type="text" class="form-control" placeholder="Last" formControlName="lastName" [(ngModel)]="profileDetails.last_name">
    <small class="text-danger" [hidden]="editProfileForm.controls['lastName'].valid || (editProfileForm.controls['lastName'].pristine && !submitted)">Last name Required</small>
    <button class="save-changes-btn" [disabled]="(!editProfileForm.valid)" (click)="saveDetails();">Save Changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)

并且 editProfile 在组件文件中定义为

this.editProfileForm = this.formBuilder.group({
    firstName: [_.get(this.profileDetails, 'first_name', ''), Validators.required],
    lastName: [_.get(this.profileDetails, 'last_name', ''), Validators.required],
});
Run Code Online (Sandbox Code Playgroud)

现在我需要在单击提交按钮时显示验证消息。现在,如果表单无效,我已禁用提交按钮。但是它不会在相应字段附近显示错误消息,这会使用户认为没有任何事情发生。如何触发错误消息以在相应的输入字段附近显示?

forms validation angular

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