Skip to content

Commit ea67fe5

Browse files
authored
Merge pull request #4315 from Laravel-Backpack/add-better-error-message
mention pro when view not found for fields as a suggestion
2 parents 6626396 + 061ae37 commit ea67fe5

File tree

13 files changed

+123
-24
lines changed

13 files changed

+123
-24
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Backpack\CRUD\app\Exceptions;
4+
5+
class BackpackProRequiredException extends \Exception
6+
{
7+
/**
8+
* Render the exception into an HTTP response.
9+
*
10+
* @param \Illuminate\Http\Request
11+
* @return \Illuminate\Http\Response
12+
*/
13+
public function render($request)
14+
{
15+
// 0, by default, pass only what is a feature we construct the rest of the message
16+
// 1 use the provided message in full
17+
switch ($this->getCode()) {
18+
case 0:
19+
$this->message = $this->message.' is a Backpack PRO feature. Please purchase and install the Backpack\PRO addon from backpackforlaravel.com';
20+
break;
21+
}
22+
23+
return response(view('errors.500', ['exception' => $this]), 500);
24+
}
25+
}

src/app/Http/Controllers/ChartController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers;
44

5-
class ChartController extends \Backpack\Pro\Http\Controllers\ChartController
6-
{
5+
if (backpack_pro()) {
6+
class ChartController extends \Backpack\Pro\Http\Controllers\ChartController
7+
{
8+
}
79
}

src/app/Http/Controllers/CrudController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public function __construct()
3434
// the complete request inside the CrudPanel object.
3535
$this->middleware(function ($request, $next) {
3636
$this->crud = app()->make('crud');
37+
3738
$this->crud->setRequest($request);
3839

3940
$this->setupDefaults();

src/app/Http/Controllers/Operations/BulkCloneOperation.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers\Operations;
44

5-
trait BulkCloneOperation
6-
{
7-
use \Backpack\Pro\Http\Controllers\Operations\BulkCloneOperation;
5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
6+
7+
if (! backpack_pro()) {
8+
trait BulkCloneOperation
9+
{
10+
public function setupBulkCloneOperationDefaults()
11+
{
12+
throw new BackpackProRequiredException('BulkCloneOperation');
13+
}
14+
}
15+
} else {
16+
trait BulkCloneOperation
17+
{
18+
use \Backpack\Pro\Http\Controllers\Operations\BulkCloneOperation;
19+
}
820
}

src/app/Http/Controllers/Operations/BulkDeleteOperation.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers\Operations;
44

5-
trait BulkDeleteOperation
6-
{
7-
use \Backpack\Pro\Http\Controllers\Operations\BulkDeleteOperation;
5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
6+
7+
if (! backpack_pro()) {
8+
trait BulkDeleteOperation
9+
{
10+
public function setupBulkDeleteOperationDefaults()
11+
{
12+
throw new BackpackProRequiredException('BulkDeleteOperation');
13+
}
14+
}
15+
} else {
16+
trait BulkDeleteOperation
17+
{
18+
use \Backpack\Pro\Http\Controllers\Operations\BulkDeleteOperation;
19+
}
820
}

src/app/Http/Controllers/Operations/CloneOperation.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers\Operations;
44

5-
trait CloneOperation
6-
{
7-
use \Backpack\Pro\Http\Controllers\Operations\CloneOperation;
5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
6+
7+
if (! backpack_pro()) {
8+
trait CloneOperation
9+
{
10+
public function setupCloneOperationDefaults()
11+
{
12+
throw new BackpackProRequiredException('CloneOperation');
13+
}
14+
}
15+
} else {
16+
trait CloneOperation
17+
{
18+
use \Backpack\Pro\Http\Controllers\Operations\CloneOperation;
19+
}
820
}

src/app/Http/Controllers/Operations/FetchOperation.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers\Operations;
44

5-
trait FetchOperation
6-
{
7-
use \Backpack\Pro\Http\Controllers\Operations\FetchOperation;
5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
6+
7+
if (! backpack_pro()) {
8+
trait FetchOperation
9+
{
10+
public function setupFetchOperationDefaults()
11+
{
12+
throw new BackpackProRequiredException('FetchOperation');
13+
}
14+
}
15+
} else {
16+
trait FetchOperation
17+
{
18+
use \Backpack\Pro\Http\Controllers\Operations\FetchOperation;
19+
}
820
}

src/app/Http/Controllers/Operations/InlineCreateOperation.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
namespace Backpack\CRUD\app\Http\Controllers\Operations;
44

5-
trait InlineCreateOperation
6-
{
7-
use \Backpack\Pro\Http\Controllers\Operations\InlineCreateOperation;
5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
6+
7+
if (! backpack_pro()) {
8+
trait InlineCreateOperation
9+
{
10+
public function setupInlineCreateOperationDefaults()
11+
{
12+
throw new BackpackProRequiredException('InlineCreateOperation');
13+
}
14+
}
15+
} else {
16+
trait InlineCreateOperation
17+
{
18+
use \Backpack\Pro\Http\Controllers\Operations\InlineCreateOperation;
19+
}
820
}

src/app/Library/CrudPanel/CrudFilter.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Backpack\CRUD\app\Library\CrudPanel;
44

5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
56
use Closure;
67
use Illuminate\Support\Str;
78
use Symfony\Component\HttpFoundation\ParameterBag;
@@ -25,7 +26,7 @@ class CrudFilter
2526
public function __construct($options, $values, $logic, $fallbackLogic)
2627
{
2728
if (! backpack_pro()) {
28-
abort(500, 'Backpack filters are a PRO feature. Please purchase and install <a href="https://backpackforlaravel.com/pricing">Backpack\PRO</a>.');
29+
throw new BackpackProRequiredException('Filter');
2930
}
3031

3132
// if filter exists

src/app/Library/CrudPanel/Traits/Read.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Backpack\CRUD\app\Library\CrudPanel\Traits;
44

5+
use Backpack\CRUD\app\Exceptions\BackpackProRequiredException;
56
use Exception;
67

78
/**
@@ -129,7 +130,7 @@ public function getEntries()
129130
public function enableDetailsRow()
130131
{
131132
if (! backpack_pro()) {
132-
abort(500, 'Details row is a PRO feature. Please purchase and install <a href="https://backpackforlaravel.com/pricing">Backpack\PRO</a>.');
133+
throw new BackpackProRequiredException('Details row');
133134
}
134135

135136
$this->setOperationSetting('detailsRow', true);
@@ -316,7 +317,7 @@ private function abortIfInvalidPageLength($value)
316317
public function enableExportButtons()
317318
{
318319
if (! backpack_pro()) {
319-
abort(500, 'Export buttons are a PRO feature. Please purchase and install <a href="https://backpackforlaravel.com/pricing">Backpack\PRO</a>.');
320+
throw new BackpackProRequiredException('Export buttons');
320321
}
321322

322323
$this->setOperationSetting('exportButtons', true);

0 commit comments

Comments
 (0)