小编Mar*_*łek的帖子

在PhpUnit测试中匹配JsonStructure - Laravel 5.4

我正在创建一个单元测试,并希望测试JSON响应中返回的结构.我知道它TestResponse提供了一种assertJsonStructure匹配JSON响应结构的方法.但由于某种原因,我无法将其映射$structure到我的响应,结果测试失败.让我分享一下所需的片段.

终点响应

{
   "status": true,
   "message": "",
   "data": [
       {
          "id": 2,
          "name": "Shanelle Goodwin",
          "email": "chaz43@example.net",
          "created_at": "2017-03-05 16:12:49",
          "updated_at": "2017-03-05 16:12:49",
          "user_id": 1
       }
    ]
}
Run Code Online (Sandbox Code Playgroud)

测试功能

public function testEndpoint(){

  $response = $this->get('/api/manufacturer/read', [], $this->headers);
  $response->assertStatus(200);
  $response->assertJsonStructure([
    'status',
    'message',
    'data' => [
      {
        'id',
        'name',
        'email',
        'created_at',
        'updated_at',
        'user_id'
      }
    ]
  ]);
  var_dump("'/api/manufacturer/read' => Test Endpoint");
}
Run Code Online (Sandbox Code Playgroud)

data数组中可以有多个节点,这就是为什么我试图在结构中提到数组,但似乎它没有正确映射.任何帮助将不胜感激:-)

phpunit unit-testing laravel laravel-5 laravel-5.4

22
推荐指数
1
解决办法
5980
查看次数

Laravel 5.2验证错误

我在Laravel 5.2中验证有些麻烦当我在这样的控制器中尝试验证请求时

$this->validate($request, [
                'title' => 'required',
                'content.*.rate' => 'required',
            ]);
Run Code Online (Sandbox Code Playgroud)

验证器捕获错误,但不将它们存储到会话中,所以当我尝试在模板中调用此代码时

 @if (isset($errors) && count($errors) > 0)
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
Run Code Online (Sandbox Code Playgroud)

Laravel抛出错误

Undefined variable: errors (View: /home/vagrant/Code/os.dev/resources/views/semantic/index.blade.php)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此代码验证时

 $validator = Validator::make($request->all(), [
                'title' => 'required',
                'content.*.rate' => 'required'
            ]);

            if ($validator->fails()) {
                return redirect()
                    ->back()
                    ->withInput($request->all())
                    ->withErrors($validator, 'error');
            }
Run Code Online (Sandbox Code Playgroud)

变量$ error在模板中也不可用,但如果我尝试在控制器中显示错误

   if ($validator->fails()) {
                dd($validator->errors()->all());
            }
Run Code Online (Sandbox Code Playgroud)

错误显示但我无法从模板访问它们.

怎么了?

laravel laravel-validation laravel-5.2

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

唯一(多列)并在一列中为null

我有简单的类别表.类别可以具有父类别(par_cat列),如果它是主类别,则为null,并且具有相同的父类别,不应该有2个或更多具有相同名称或URL的类别.

该表的代码:

CREATE TABLE IF NOT EXISTS `categories` (
`id` int(10) unsigned NOT NULL,
  `par_cat` int(10) unsigned DEFAULT NULL,
  `lang` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'pl',
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `url` varchar(120) COLLATE utf8_unicode_ci NOT NULL,
  `active` tinyint(3) unsigned NOT NULL DEFAULT '1',
  `accepted` tinyint(3) unsigned NOT NULL DEFAULT '1',
  `priority` int(10) unsigned NOT NULL DEFAULT '1000',
  `entries` int(10) unsigned NOT NULL DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL …
Run Code Online (Sandbox Code Playgroud)

mysql sql database unique-constraint

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

如何利用StorageFacade利用Filesystem类的glob方法?

这与Laravel 5有关.

我可以在Illuminate\Filesystem\Filesystem一个叫做的方法中看到glob($pattern, $flags = 0)

不幸的是,这种方法没有反映在FilesystemAdapterLaravel 5附带的默认值中.

这将是很好的,因为我需要做一些事情Storage::disk('local')->glob([_]*[.blade.php]);(为了让所有存储的刀片文件以下划线开头.

实现这一目标的最简洁方法是什么?

php dependency-injection laravel laravel-5 flysystem

18
推荐指数
1
解决办法
1785
查看次数

laravel 5 - css文件未在资产清单中定义?

我收到了laravel 5的错误消息,我不明白.

Next exception 'ErrorException' with message 'File build/css/all.css not             
defined in asset manifest.
Run Code Online (Sandbox Code Playgroud)

我没有安装任何资产管道或其他东西.只是使用elixir来编译,缩小和版本化scss文件all.css并将其包含在主视图中<link rel="stylesheet" href="{{ elixir("css/all.css") }}">

什么是"资产清单"以及如何解决这个错误?`

assets laravel gulp laravel-5 laravel-elixir

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

Eloquent sync和created_at/updated_at

我有以下代码:

$entry->save();

$categories = [];

$categories[Input::get('main_category')] = ['main' => 1];

for ($i=1; $i<=4 ; ++$i) {
    $input = Input::get('category_'.$i);
    if ($input != '') {
            $categories[$input] = ['main' => 0];
    }
}



$entry->categories()->sync($categories);

$inTags = explode(',', trim( Input::get('tags'), ','));
$tags = [];

foreach ($inTags as $tag) {
    $tag = trim($tag);
    if ($tag == '') {
        continue;
    }
    $fTag = Tag::firstOrCreate(array('name' => $tag));

    $tags[$fTag->id] = ['entry_id' => $entry->id];
}
$entry->tags()->sync($tags);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中我创建了一个条目($entry->save()这里只是理解它,早期的代码并不重要),然后保存到这个条目所属的类别(使用数据透视表)并对标记执行相同的操作(但是如果标记没有,则为标记.存在我创建一个).

但是在两个数据透视表中,created_at字段0000-00-00 00:00:00在插入数据后保留为default()(可能与之相同,updated_at但我没有对其进行测试).

我是否需要以某种方式自动激活归档时间戳或者需要我自己手动填写它们(但可能意味着更多编码而不使用 …

php laravel eloquent laravel-4

16
推荐指数
1
解决办法
8089
查看次数

在Laravel中找不到类'App\Http\Controllers\Excel'

在我的控制器中,我有如下代码:

Excel::create('Laravel Excel', function($excel) {

        $excel->sheet('Excel sheet', function($sheet) {

            $sheet->setOrientation('landscape');

        });

    })->export('xls');
Run Code Online (Sandbox Code Playgroud)

在别名数组的config/app.php中我定义了这个:

'Excel'     => 'Maatwebsite\Excel\ExcelServiceProvider',
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我不能让它工作这个库...任何想法?

php namespaces laravel laravel-excel

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

Select2中的可选optgroups

我想用缩进创建多级select2选项,但我不想使用optgroup元素,因为我想允许选择主要类别.如果是select2,有什么方法可以设置样式吗?

我的原始HTML选择如下所示:

<select class="js-select-multiple">
  <option class="l1">Option 1</option>
  <option class="l2">Suboption 1</option>
  <option class="l2">Suboption 2</option>
  <option class="l2">Suboption 3</option>
  <option class="l1">Option 2</option>
  ...
</select>
<script>$(".js-select-multiple").select2({maximumSelectionLength: 5});</script>
Run Code Online (Sandbox Code Playgroud)

所以不使用Select2我可以添加text-indent属性到.l2类.但是,似乎Select2不使用那些用于选项的类,因此设置这些类的样式将不起作用.

那有什么解决方法吗?

css jquery jquery-select2

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

没有与sass bootstrap集成显示的glyphicons

我使用本教程在我的项目中集成bootstrap:

https://laravel-news.com/2015/10/setup-bootstrap-sass-with-laravel-elixir/

这会将app.css文件放在css文件夹中.但是,如果我尝试使用glyphicons,他们就不会出现.所以我试着像这样修改elixir文件:

    elixir(function(mix) {

    mix.sass('app.scss')
        .browserify('app.js')
        .copy('node_modules/bootstrap-sass/assets/fonts', 'public/css/fonts')   

});
Run Code Online (Sandbox Code Playgroud)

fonts文件夹在public/css/fonts下复制,但没有显示图标.我在这里错过了什么?任何线索?

在我的app.css中,路径似乎是正确的,例如:

src: url("fonts/bootstrap/glyphicons-halflings-regular.eot");
Run Code Online (Sandbox Code Playgroud)

fonts sass twitter-bootstrap laravel laravel-elixir

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

PHP - 有效的变量名称

在关于变量的PHP手册中,我们可以阅读:

变量名称遵循与PHP中其他标签相同的规则.有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线.作为正则表达式,它将表示为:'[a-zA-Z_\x7f-\xff] [a-zA-Z0-9_\x7f-\xff]*'

很明显,当我们尝试运行时:

$0-a = 5;
echo $0-a;
Run Code Online (Sandbox Code Playgroud)

我们会得到Parse错误.这很明显.

但是在尝试某些事情时,我发现实际变量在使用这样的语法时可以包含任何字符(或者至少以数字开头并包含连字符):

${'0-a'} = 5;
echo ${'0-a'};
Run Code Online (Sandbox Code Playgroud)

它没有任何问题.

还使用这样的变量变量:

$variable = '0-a';
$$variable = 5;
echo $$variable;
Run Code Online (Sandbox Code Playgroud)

工作没有任何问题.

所以问题是 - 我在手册中引用的句子是不是真的,或者这可能是我所展示的不是真正的变量,或者它可能是在PHP手册中的其他地方记录的?

我已经验证了它 - 它似乎在PHP 5.6和7.1中都有效

问题是 - 使用这种结构是否安全?根据手册,它似乎根本不可能.

php

14
推荐指数
1
解决办法
1661
查看次数