Merge pull request #8410 from beganovich/fixes-for-storing-designs

Coerce the string to array if empty string passed for `design`
This commit is contained in:
David Bomba 2023-04-04 20:50:18 +10:00 committed by GitHub
commit 047fb30a78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 1 deletions

View File

@ -0,0 +1,24 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\DataProviders;
class DesignBlocks
{
public function __construct(
public string $includes = '',
public string $header = '',
public string $body = '',
public string $footer = ''
) {
}
}

View File

@ -11,6 +11,7 @@
namespace App\Factory; namespace App\Factory;
use App\DataProviders\DesignBlocks;
use App\Models\Design; use App\Models\Design;
class DesignFactory class DesignFactory
@ -24,7 +25,7 @@ class DesignFactory
$design->is_active = true; $design->is_active = true;
$design->is_custom = true; $design->is_custom = true;
$design->name = ''; $design->name = '';
$design->design = '[]'; $design->design = new DesignBlocks();
return $design; return $design;
} }

View File

@ -33,12 +33,17 @@ class StoreDesignRequest extends Request
//'name' => 'required', //'name' => 'required',
'name' => 'required|unique:designs,name,null,null,company_id,'.auth()->user()->companyId(), 'name' => 'required|unique:designs,name,null,null,company_id,'.auth()->user()->companyId(),
'design' => 'required|array', 'design' => 'required|array',
'design.header' => 'required|min:1',
'design.body' => 'required|min:1',
'design.footer' => 'required|min:1',
'design.includes' => 'required|min:1',
]; ];
} }
public function prepareForValidation() public function prepareForValidation()
{ {
$input = $this->all(); $input = $this->all();
$input['design'] = (isset($input['design']) && is_array($input['design'])) ? $input['design'] : [];
if (! array_key_exists('product', $input['design']) || is_null($input['design']['product'])) { if (! array_key_exists('product', $input['design']) || is_null($input['design']['product'])) {
$input['design']['product'] = ''; $input['design']['product'] = '';