Add Champion model, form validation, and components for StreamerPanel.

- Added Champion model to StreamerPanelController.
- Implemented form validation for champion_id, platform, username, and displayname in create and update methods.
- Created StreamerCreateForm and StreamersTable components for better organization.
This commit is contained in:
Rico van Zelst
2024-03-22 02:35:44 +01:00
parent c665d3f70f
commit b46128ec26
11 changed files with 212 additions and 12 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Models\Streamer;
use App\Models\Champion;
use Illuminate\Http\Request;
class StreamerPanelController extends Controller
@@ -22,7 +23,9 @@ class StreamerPanelController extends Controller
*/
public function create()
{
//
return view('streamerpanel.streamer-create', [
'champions' => Champion::all(),
]);
}
/**
@@ -30,7 +33,16 @@ class StreamerPanelController extends Controller
*/
public function store(Request $request)
{
//
$request->validate([
'champion_id' => 'required|exists:champions,id',
'platform' => 'required|in:twitch,youtube,kick,douyu,huya',
'username' => 'required|string',
'displayname' => 'required|string',
]);
Streamer::create($request->all());
return redirect()->route('streamerpanel.index');
}
/**
@@ -38,7 +50,10 @@ class StreamerPanelController extends Controller
*/
public function edit(Streamer $streamer)
{
//
return view('streamerpanel.streamer-edit', [
'streamer' => $streamer,
'champions' => Champion::all(),
]);
}
/**
@@ -46,7 +61,16 @@ class StreamerPanelController extends Controller
*/
public function update(Request $request, Streamer $streamer)
{
//
$request->validate([
'champion_id' => 'required|exists:champions,id',
'platform' => 'required|in:twitch,youtube,kick,douyu,huya',
'username' => 'required|string',
'displayname' => 'required|string',
]);
$streamer->update($request->all());
return redirect()->route('streamerpanel.index');
}
/**
@@ -54,6 +78,8 @@ class StreamerPanelController extends Controller
*/
public function destroy(Streamer $streamer)
{
//
$streamer->delete();
return redirect()->route('streamerpanel.index');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\View\Components\Streamerpanel;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class StreamerCreateForm extends Component
{
/**
* Create a new component instance.
*/
public function __construct(public $champions)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.streamerpanel.streamer-create-form');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\View\Components\Streamerpanel;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
use App\Models\Streamer;
use Illuminate\Support\Collection;
class StreamersTable extends Component
{
/**
* Create a new component instance.
*/
public function __construct(public Collection $streamers)
{
$this->streamers = $streamers;
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View
{
return view('components.streamerpanel.streamers-table');
}
}