public function index()
{
$user = User::where('id', Auth::id())
->firstOrFail();
$type = $user->type;
if ($type == 10) {
return $this->client();
}
}
public function client()
{
return redirect('/clients');
}
if ($user->type === User::ROLE_CLIENT) {
// ...
}
if ($user->isClient()) { // На самом деле customer :)
// ...
}
if ($user->isRole(new RoleClient)) {
// ...
}
if ($user->isClient()) {
return redirect('/clients');
}
// В файле контроллера
public function index()
{
$user = Auth::user();
if ($user->isClient()) {
return redirect('/clients');
}
// ...
}
// В файле модели пользователя
class User extends Authenticatable
{
const TYPE_CLIENT = 10;
// ...
public function isClient()
{
return (self::TYPE_CLIENT == $this->type);
}
}
$this это способ сослаться на текущий экземпляр объекта, для вызова его метода или атрибута.
В данном случае $this позволяет обратится к методу client() (включил режим гадалки) контроллера.
class User extends Authenticatable
{
const TYPE_CLIENT = 10;
// ...
public function isClient()
{
return (self::TYPE_CLIENT == $this->type);
}
}
public function isClient()
{
if ($this->type==10) return true;
return false;
}
В смысле "способ сослаться"? Можно человеческим языком?) Вызывает он метод на исполнение или запрашивает инфу из метода?
узнал, что в Laravel есть трейты.
это очень удобно делать много методов
есть какое-то преимущество с константой? $user->isClient() проверил работает
public function isClient()
{
if ($this->type==10) return true;
return false;
}
$this это способ сослаться на текущий экземпляр объекта, для вызова его метода или атрибута.
return $this->client();
return redirect('/clients');
значит способы сослаться this в Vue и LAravel разные
class FooController
{
public function client()
{
return redirect('/clients');
}
public function index()
{
//...
if ($type == 10) {
return $this->client();
}
//...
}
}
class FooController
{
public function client()
{
return redirect('/clients');
}
public function index()
{
//...
if ($type == 10) {
$redirect = $this->client();
return $redirect;
}
//...
}
}
обращаются к текущему объекту для вызова метода- в этом они одинаковые. Согласен. Тогда в чем они разные? Т.к. они по-любому по разному "обращаются к объекту для вызова метода, свойства или атрибута". В принципе это можно выяснить, сделав проверку (посмотреть какие данные получают VUE и ЛАравель при использовании this).
thisTest(){
this.test = this.returnTest();
},
this.returnTest();
dd($this);
в твоем контроллере отвадило бы тебя писать сюда такой вопрос. Естественно, чтобы увидеть результат, нужно грузить в браузере страницу, которую обрабатывает исходный контроллер.