Поделиться свойством контроллера для метода модели - laravel - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть вопрос - можно ли передать или поделиться свойством от контроллера к модели в laravel. Вот пример кода "проблемы".

В основном у меня есть метод модели, который позволяет получить цену продукта в данной валюте.

class Product extends Model
{
    public function getPrice()
        {
            return number_format($this->price_retail / $this->sessionHelper->getCurrentCurrency()->conversion_rate, 2);
        }
}

sessionHelper - это отдельный класс, который предоставляет информацию о текущей валюте. Я хотел бы удалить эту часть и использовать свойство из контроллера

В проекте мой productController имеет доступ к глобальным переменным, расширенным из baseController:

class ProductController extends BaseController
{
    protected $product;

    public function __construct(Product $product)
    {
        parent::__construct();
        $this->product = $product;
        $this->currentCurrency  //gives current currency info which i need in model
    }
   //test function
   public function showFirstProductPrice(){
       $this->product->first()->getPrice();
   }
}

Я мог бы сделать что-то вроде передачи переменной через функцию, например:

$this->product->first()->getPrice($Variable);

Но в поле зрения каждый раз, когда мне нужно будет передать переменную $. В настоящее время я вызываю метод модели напрямую, который вызывает помощника для курса обмена валюты, и он работает, но я думаю, что есть лучший способ сделать это.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 11 апреля 2019

Конечно, вы можете передать переменную.

    class Product extends Model
   {
    public function getPrice($variable)
        {
            return number_format($this->price_retail /$variable, 2);
        }
    }

в вашем контроллере вы можете сделать это

    class ProductController extends BaseController
{
    protected $product;

    public function __construct(Product $product)
    {
        parent::__construct();
        $this->product = $product;
        $this->currentCurrency  //gives current currency info which i need in model
    }
   //test function
   public function showFirstProductPrice(){
       $this->product->first()->getPrice($variable);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...