@laravel_pro

Страница 556 из 2014
Vlad
04.07.2017
10:17:49
company()->delete()
Auth::user()->company->delete();

F01134H
04.07.2017
10:17:52
у тебя метод просто не запустится, если мидлвейр заблочит неавторизованного юзера

Андрэ
04.07.2017
10:17:56
после company скобки поставь, да

Vlad
04.07.2017
10:18:36
после company скобки поставь, да
сработало, а поясните?

Google
F01134H
04.07.2017
10:18:50
а че тут пояснять

Андрэ
04.07.2017
10:18:53
Без скобок тебе возвращается коллекция, результат запроса

F01134H
04.07.2017
10:19:18
типо того

Андрэ
04.07.2017
10:19:20
А со скобками - возврщается QueryBuilder, и дальше с этим запросом можно работать - удалять, создавать и т/д/ записи

F01134H
04.07.2017
10:19:38
только мидлвейры желательно в роутере прописывать, что бы у тебя централизованно все это хранилось

сработало, а поясните?
функцонал построен на вызове __call() а не на __get() - гугли магические методы

Андрэ
04.07.2017
10:20:20
Чо мы тут о разном говорим, ну да ладно

Vlad
04.07.2017
10:20:25
только мидлвейры желательно в роутере прописывать, что бы у тебя централизованно все это хранилось
для prefix надесю это можно сделать...Хотя, контроллер юзер и так у меня все ссылки рбрабатывает

F01134H
04.07.2017
10:20:38
ну он спросил почему там скобки

Vlad
04.07.2017
10:20:38
Route::prefix('users')->group(function() { Route::get('/', 'UserController@index')->name('home'); Route::get('/company/delete', 'UserController@deleteCompany'); Route::get('/confirmation/{token}','Auth\RegisterController@confirmation')->name('confirmation');

F01134H
04.07.2017
10:20:39
я ответил

Google
Андрэ
04.07.2017
10:20:52
$user->company и $user->company() разные штуки возвращает

F01134H
04.07.2017
10:21:11
ну вот тем-более

Vlad
04.07.2017
10:21:12
Андрэ
04.07.2017
10:21:16
Ну ты не на тот вопрос ответил по сути

F01134H
04.07.2017
10:21:25
внутри то это через магические методы работает

Андрэ
04.07.2017
10:21:40
Нет же. ты ответил на вопрос "как это сделано, что можно скобки а можно нет"

а вопрос был о том, почему без скобок удаление не получалось

F01134H
04.07.2017
10:22:01
разные магические методы потому что вызываются ?

Vlad
04.07.2017
10:22:05
user()->company()->delete();

Call to undefined function App\Http\Controllers\company()

F01134H
04.07.2017
10:22:18
?

Андрэ
04.07.2017
10:22:33
разные магические методы потому что вызываются ?
Разные магические методы могут возвразщать одинаковый результат

Тут дело именно в том, что возвращает метод

ну комон

F01134H
04.07.2017
10:22:53
Разные магические методы могут возвразщать одинаковый результат
я в курсе, а я сказал что в данном коде это не так

F01134H
04.07.2017
10:23:35
где?
когда он вместо company вызывает company()

разные действия происходят

следовательно магические методы выполняют разные функции

Google
Vlad
04.07.2017
10:24:12
?
?

Андрэ
04.07.2017
10:24:18
Так то да, но к контексте вопроса - важно, что возвращается, а не то, какой магический метод используется

F01134H
04.07.2017
10:24:41
важно в общем то все)

Андрэ
04.07.2017
10:25:30
Слишком общий ответ. Так можно на простой вопрос и лекцию на пару часов прочитать. Но зачем.

F01134H
04.07.2017
10:26:42
мм

он спросил, почему там скобки нужны, я ответил, потому что магические методы разные вызываются

Vlad
04.07.2017
10:27:14
$user = Auth::user(); $user->company()->delete();

F01134H
04.07.2017
10:27:23
очевидно, что они разные результаты возвращают, раз одно работает, а другое нет

Андрэ
04.07.2017
10:27:50
Я не буду с тобой спорить

F01134H
04.07.2017
10:28:01
сам начал

)

Андрэ
04.07.2017
10:28:14
Для меня очевидно, что ему надо было понять, почему без скобок не работает delete

Vlad
04.07.2017
10:28:15
Как $user тогда на все function распространить

$user = Auth::user(); $user->company()->delete();

А то так везде лупить пока только

Андрэ
04.07.2017
10:28:33
И ответ не в том, что другой маг. метод, а в том, что возврщается другое значение

F01134H
04.07.2017
10:29:03
Как $user тогда на все function распространить
ты можешь в мидлвейре создать свойство user

Андрэ
04.07.2017
10:30:00
ты можешь в мидлвейре создать свойство user
А как к нему из контроллера доступиться?

F01134H
04.07.2017
10:30:17
А как к нему из контроллера доступиться?
контроллер с тем же запросом работает, что и мидлвейр

это один объект

Google
Vlad
04.07.2017
10:30:30
ты можешь в мидлвейре создать свойство user
$this->middleware('auth'); Это же родной кстати мидлик, только сейчас вспомнил что его не создавал

F01134H
04.07.2017
10:30:38
смотри

Андрэ
04.07.2017
10:30:58
смотрю

F01134H
04.07.2017
10:31:07
class RedirectIfAuthenticated { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect('/home'); } $request->user = Auth::user(); return $next($request); } }

$request->user = Auth::user(); вот такую строчку добавь и усе

это тот самый мидлвейр

Андрэ
04.07.2017
10:32:00
а, ну вариант. Хотя я бы middleware для этого не пользовал наверн

И это будет работать? Надо посмотреть

F01134H
04.07.2017
10:33:25
Vlad а потом делаешь такое в контроллере своем function deleteUserCompanies(Request $request) { $request->user->company()->delete(); }

Admin
ERROR: S client not available

F01134H
04.07.2017
10:34:13
но потом вроде передалал на композицию как то

Андрэ
04.07.2017
10:34:14
Ясн. Ну мне как-то это не очень нравится, в middleware определять юзера да еще и в request его пихать

Vlad
04.07.2017
10:34:33
ясно, я сейчас в ступоре что у меня это мидла вообще нет

F01134H
04.07.2017
10:34:53


удалил наверное?

i
04.07.2017
10:35:23
А зачем делать $request->user = Auth::user(); почему просто сразу не использовать Auth::user()?

Google
F01134H
04.07.2017
10:35:48
а и вправду, почему?

Vlad
04.07.2017
10:35:50
Я с этого начинал))

Только вы меня отговорили

F01134H
04.07.2017
10:36:03
а проблема в чем тогда

я тебя отговорил проверку is_null убрать в мидлвейр и все

i
04.07.2017
10:36:35
Если есть middleware которая проверяет авторизацию, то Auth::user() всегда валидного пользователя будет возвращать

Vlad
04.07.2017
10:36:36
проще говоря и проверка не нужна?

public function handle($request, Closure $next, $guard = null) { switch ($guard) { case 'admin': if (Auth::guard($guard)->check()) { return redirect()->route('admin.dashboard'); } break; default: if (Auth::guard($guard)->check()) { return redirect('/users'); } break; }

F01134H
04.07.2017
10:37:07
проще говоря и проверка не нужна?
у тебя проверка идет в мидлвейре

Vlad
04.07.2017
10:37:17
нет, влопатить не могу где auth мидл

i
04.07.2017
10:37:26
Route::group(['middleware' => ['auth']], function () {

F01134H
04.07.2017
10:37:37
ну запили свой мидлвейр значит

Андрэ
04.07.2017
10:37:37
нет, влопатить не могу где auth мидл
все легко, если ознакомиться со структурой фреймворка хоть немного

i
04.07.2017
10:37:38
Можно вот так

F01134H
04.07.2017
10:37:56
и все что там нужно, это определить внутри handle if (Auth::guard($guard)->check()) { return redirect('/home'); }

Андрэ
04.07.2017
10:38:28
нет, влопатить не могу где auth мидл
посмотри файл app\Http\Kernel.php

Vlad
04.07.2017
10:39:29
посмотри файл app\Http\Kernel.php
'auth' => \Illuminate\Auth\Middleware\Authenticate::class, Родной получается, я выше предполагал, а вы все на свой перенезначаете как понимаю?

ну запили свой мидлвейр значит
в итоге получается public function deleteCompanyForUser(){ Auth::user()->company()->delete(); Плюс приявязать мидл к группе users в routes/web?

Андрэ
04.07.2017
10:54:00
Зачем вообще свой middleware аутентификации пилить, если он есть?

i
04.07.2017
10:54:28
в итоге получается public function deleteCompanyForUser(){ Auth::user()->company()->delete(); Плюс приявязать мидл к группе users в routes/web?
Да, но лучше сразу обернуть все методы которые предпологают аутефицированного пользователя

Страница 556 из 2014