خیلی وقتها در طراحی سایت با لاراول شما می خواهید یک لینک با ارسال پارامتر ایجاد کنید در زیر مثالی از آن را می بینید:
اگر بخواهیم کار بالا را با Eloquent انجام دهیم و در مدل این ارسال پارامتر را روی لینک انجام دهیم به شکل زیر می توان عمل کرد:
<?php
namespace App;
class User {
protected $appends = [
'url'
];
public function getUrlAttribute()
{
return route('users.show', $this);
}
}
سپس در view شما به شکل زیر لینک را نمایش می دهید:
همانطور که می بینید کد بالا فوق العاده تمیز و حرفه ای است.
حالا در اینجا می خواهیم چندین مسیر را با استفاده از Eloquent مسیردهی کنیم:
<?php
namespace App;
use App\Presenters\User\UrlPresenter;
class User {
protected $appends = [
'url'
];
public function getUrlAttribute()
{
return new UrlPresenter($this);
}
}
<?php
namespace App\Presenters\User;
use App\User;
class UrlPresenter {
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function __get($key)
{
if(method_exists($this, $key))
{
return $this->$key();
}
return $this->$key;
}
public function delete()
{
return route('users.delete', $this->user);
}
public function edit()
{
return route('users.edit', $this->user);
}
public function show()
{
return route('users.show', $this->user);
}
public function update()
{
return route('users.update', $this->user);
}
}
حالا به شکل زیر لینکهایمان را نمایش میدهیم:
همانطور که می بینید شما به راحتی می توانید مسیرهای خود را در مدلها تعریف کنید.