<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ServiceProvider extends Controller
{
public static function getLowestPrice($id) {
return $id;
}
}
@inject('provider', 'App\Http\Controllers\ServiceProvider')
<span class="text-bold">
{{ $provider::getLowestPrice($product_cat->id) }}
</span>
- 같은 방법으로 Service를 호출할 수 도 있다.
<?php
namespace App\Services;
class ViewerService
{
static function astro($str, $len, $position='end') {
$ast = '';
for ($i = 0; $i < $len; $i++) {
$ast .= '*';
}
return mb_substr($str, '0', -$len) . $ast;
}
}
@inject('viewer', 'App\Services\ViewerService')
<span class="text-bold">
{{ $viewer::astro('mynameis, 4) }}
</span>
@inject('metrics', 'App\Services\MetricsService')
<div>
Monthly Revenue: {{ $metrics->monthlyRevenue() }}.
</div>
- 위의 방식과는 사뭇 다른 방식에 대해서 말씀드리겠습니다.
위의 방식은 blade에서 기존 컨트롤러의 메소드를 호출하는 방식인데 이것과는 다르게 아예 blade 자체를 controller와 시키는 방식입니다.
@include('partials/message')
<?php
namespace App\Http\Controllers;
...............
class MessageController extends Controller
{
public function __construct()
{
}
public function received() // Request $request
{
//
}
}
$message = new MessageController();
$message->received();
?>
- 상기보다 더 단순하고 직관적인 방식이 View Component를 사용하는 방식이다.