Size: a a a

Laravel для начинающих

2021 January 27

🎃

🎃 Даниил ◠‿◠✿... in Laravel для начинающих
BJ
$this->middleware('can:manage')
 как сюда аргумент передать ?
ты уже передал
источник

B

BJ in Laravel для начинающих
в Гейт
источник

B

BJ in Laravel для начинающих
нет там ожидает
источник

🎃

🎃 Даниил ◠‿◠✿... in Laravel для начинающих
BJ
в Гейт
manage и есть аргумент
источник

С

Санжар in Laravel для начинающих
BJ
в Гейт
Билл?
источник

AH

Andrey Helldar in Laravel для начинающих
Санжар
Парни, привет.
В сервисе идет вызов в духе:
        $xml = (new CentersRepository())->getByTM($request->_tm);
       $searchContacts = (new CentersSearch($xml));
       $result = $searchContacts->regionsWithCities();
       return Response::success($result);


Тут сразу два инстанса делается, можно ли как-то иначе это организовать?
В конструкторе или как лучше?
class Searcher
{
   protected $repository;

   protected $tm_id;

   public function __construct(CentersRepository $repository)
   {
       $this->repository = $repository;
   }

   public function tm(int $id): self
   {
       $this->tm_id = $id;

       return $this;
   }

   public function regionsWithCities()
   {
       return $this->searcher()->regionsWithCities();
   }

   protected function searcher()
   {
       return new CentersSearch($this->repository());
   }

   protected function repository()
   {
       return $this->repository->getByTM($this->tm_id);
   }
}

class MyController extends Controller
{
   public function search(Request $request, Searcher $searcher)
   {
       $searcher->tm($request->get('id'));

       $result = $searcher->regionsWithCities();

       return Response::success($request);
   }
}
источник

AH

Andrey Helldar in Laravel для начинающих
BJ
$this->middleware('can:manage')
 как сюда аргумент передать ?
$this->middleware('can:manage,foo,bar')

В мидлваре:

__construct(string $type, $val1, $val2)
// $type == 'manage'
// $val1 == 'foo'
// $val2 == 'bar'
источник

С

Санжар in Laravel для начинающих
Andrey Helldar
class Searcher
{
   protected $repository;

   protected $tm_id;

   public function __construct(CentersRepository $repository)
   {
       $this->repository = $repository;
   }

   public function tm(int $id): self
   {
       $this->tm_id = $id;

       return $this;
   }

   public function regionsWithCities()
   {
       return $this->searcher()->regionsWithCities();
   }

   protected function searcher()
   {
       return new CentersSearch($this->repository());
   }

   protected function repository()
   {
       return $this->repository->getByTM($this->tm_id);
   }
}

class MyController extends Controller
{
   public function search(Request $request, Searcher $searcher)
   {
       $searcher->tm($request->get('id'));

       $result = $searcher->regionsWithCities();

       return Response::success($request);
   }
}
фига. даже неловко что по сути ты переделал.
Но я немного не понял, а зачем выводить в отдельный класс?
Разве нельзя те же методы tm и инстанс репозитория хранить в сервисе?
источник

AH

Andrey Helldar in Laravel для начинающих
Санжар
фига. даже неловко что по сути ты переделал.
Но я немного не понял, а зачем выводить в отдельный класс?
Разве нельзя те же методы tm и инстанс репозитория хранить в сервисе?
источник

B

BJ in Laravel для начинающих
Andrey Helldar
$this->middleware('can:manage,foo,bar')

В мидлваре:

__construct(string $type, $val1, $val2)
// $type == 'manage'
// $val1 == 'foo'
// $val2 == 'bar'
Gate::define('manage', function (User $user) {
           return $user;
       });
сюда нужно передать юзера через дерективу can внутри конструктора
источник

С

Санжар in Laravel для начинающих
почитал-понял-принял, спасибо!
источник

RK

Roman Kolosov in Laravel для начинающих
Не понял прикола
источник

AH

Andrey Helldar in Laravel для начинающих
BJ
Gate::define('manage', function (User $user) {
           return $user;
       });
сюда нужно передать юзера через дерективу can внутри конструктора
источник

RK

Roman Kolosov in Laravel для начинающих
источник

RK

Roman Kolosov in Laravel для начинающих
А смысл?)
источник

AH

Andrey Helldar in Laravel для начинающих
Они забыли добавить разделитель.
Строки 5-34 - плохо.
Строки 36-66 - хорошо
источник

RK

Roman Kolosov in Laravel для начинающих
Ну тоесть не логичнее было бы сделать один метод типо сет сторону раз это квадрат?)
источник

RK

Roman Kolosov in Laravel для начинающих
Andrey Helldar
Они забыли добавить разделитель.
Строки 5-34 - плохо.
Строки 36-66 - хорошо
Я про другое
источник

С

Санжар in Laravel для начинающих
Andrey Helldar
class Searcher
{
   protected $repository;

   protected $tm_id;

   public function __construct(CentersRepository $repository)
   {
       $this->repository = $repository;
   }

   public function tm(int $id): self
   {
       $this->tm_id = $id;

       return $this;
   }

   public function regionsWithCities()
   {
       return $this->searcher()->regionsWithCities();
   }

   protected function searcher()
   {
       return new CentersSearch($this->repository());
   }

   protected function repository()
   {
       return $this->repository->getByTM($this->tm_id);
   }
}

class MyController extends Controller
{
   public function search(Request $request, Searcher $searcher)
   {
       $searcher->tm($request->get('id'));

       $result = $searcher->regionsWithCities();

       return Response::success($request);
   }
}
А норм если сделать класс Searcher сервисом?
источник

С

Санжар in Laravel для начинающих
именно хранить как типичный сервис в app/support/services
источник