I am doing some research on laravel controller and want to make a dynamic controller . Somehow I can not pass data. I donnno what I am doing wrong.
Controller
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Models\Role;
use Illuminate\Http\Request;
class RoleController extends Controller
{
private $name = 'roles';
private $headers = array(
'Name',
'Created By'
);
public function index() {
return view('backend.roles.index', [
'name' => $this->name,
'headers' => $this->headers,
'data' => Role::paginate(10),
]);
}
}
Blade file
<x-backend-layout>
<x-table-layout :name="$name" :headers="$headers" :data="$data"/>
</x-backend-layout>
Component file
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class TableLayout extends Component
{
protected $name, $headers, $data;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct($name, $headers, $data)
{
$this->name = $name;
$this->headers = $headers;
$this->data = $data;
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
return view('components.table-layout');
}
}
component blade file
<div class="flex flex-col">
<div class="-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div class="py-2 align-middle inline-block min-w-full sm:px-6 lg:px-8">
<div class="shadow overflow-hidden border-b border-gray-200 sm:rounded-lg">
<table class="min-w-full divide-y divide-blue-200">
<thead class="bg-gray-50">
<tr>
{{dd($name)}}
{{dd($headers)}}
@foreach ($headers as $header)
<th scope="col" class="px-6 py-3 text-left text-xs font-black text-blue-400 uppercase tracking-wider">
{{ $header }}
</th>
@endforeach
<th scope="col" class="relative px-6 py-3">
<span class="sr-only">Edit</span>
</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
</tbody>
</table>
</div>
</div>
</div>
</div>
I am getting this error
Undefined variable: name (View: /home/rafid/project/laravel/starter/resources/views/components/table-layout.blade.php)