Mình đang làm website mà phân vân cái vụ này quá. Mình có tìm hiểu về Blade Template thì có 1 mục là Component nên mình phân vân là nên dùng Component của Laravel hay không hay là dùng theo cách thông thường. Chẳng hạn như thế này:
Nếu không dùng Components thì sẽ như thế này (Cách thông thường):
Trong file ContactController:
public function index()
{
$message = "Gửi liên hệ không thành công!";
return view('web.contact', compact('message'));
}
Trong file contact.blade.php:
<div class="alert alert-error">
<p>{{ $message }}</p>
</div>
Khi dùng Components của laravel thì như thế này:
Controller thì cũng giống như cách thông thường:
File ContactController:
public function index()
{
$message = "Gửi liên hệ không thành công!";
return view('web.contact', compact('message'));
}
Đến khi dùng file view
File contact.blade.php:
<x-package-alert type="error" :message="$message"></x-package-alert>
Ố ồ ố! Đã chưa, nhìn như Vue ý, chỉ 1 dòng duy nhất thôi nhưng đừng bẻm, còn nữa chưa hết đâu, còn khai báo cái tag x-package-alert
này nữa:
File Alert.php (App\View\Components - file này tự động xuất hiện khi dùng lệnh):
public function __construct($type, $message)
{
//
$this->type = $type;
$this->message = $message;
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
return view('components.alert');
}
File AlertServiceProvider (file này tự tạo nhé):
public function boot()
{
Blade::component('package-alert', Alert::class);
}
File alert.bade.php:
<div class="alert alert-{{ $type }}">
<!-- Smile, breathe, and go slowly. - Thich Nhat Hanh -->
<p>{{ $message }}</p>
</div>
Còn đăng ký provider vào config/app nữa:
'providers' => [
App\Providers\ComponentServiceProvider::class,
]
Theo mọi người thì cái nào ổn hơn? Components hay no Component?