私は自分のサービスクラスを作成しました。その中には、リダイレクト先のルートを選択する前に、最小限の論理チェックを実行することになっているhandleRedirect()
という関数があります。サービスクラス内でリダイレクトしますか?
class LoginService
{
private $CartTable;
private $SessionCustomer;
private $Customer;
public function __construct(Container $SessionCustomer, CartTable $CartTable, Customer $Customer)
{
$this->SessionCustomer = $SessionCustomer;
$this->CartTable = $CartTable;
$this->Customer = $Customer;
$this->prepareSession();
$this->setCartOwner();
$this->handleRedirect();
}
public function prepareSession()
{
// Store user's first name
$this->SessionCustomer->offsetSet('first_name', $this->Customer->first_name);
// Store user id
$this->SessionCustomer->offsetSet('customer_id', $this->Customer->customer_id);
}
public function handleRedirect()
{
// If redirected to log in, or if previous page visited before logging in is cart page:
// Redirect to shipping_info
// Else
// Redirect to/
}
public function setCartOwner()
{
// GET USER ID FROM SESSION
$customer_id = $this->SessionCustomer->offsetGet('customer_id');
// GET CART ID FROM SESSION
$cart_id = $this->SessionCustomer->offsetGet('cart_id');
// UPDATE
$this->CartTable->updateCartCustomerId($customer_id, $cart_id);
}
}
このサービスは、ログインまたは登録が成功した後にコントローラで呼び出されます。私はここからredirect()->toRoute();
にアクセスする最良の方法が何であるか(または私がここでそれを行うべきかどうか)はわかりません。
また、自分のコードがどのように構成されているかについての他のコメントがありましたら、お気軽にお寄せください。
、ありがとうございました! – herondale