Я использую Laravel для обработки событий, в частности, когда пользователь получает доступ к определенной странице, мой код выглядит следующим образом:Получить переменные из нового события Laravel
Это мой PageController:
public function showTestPage()
{
//This "redirect to" method is so i don't have to rewrite the event
for every method that returns a new view;
$this->redirectTo('test');
}
public function redirectTo($page)
{
//This is the data i want to access from my UserAccessedPage Listener
event(new UserAccessedPage($page));
return view($page);
}
Наконец вот мой UserAccessedPage СЛУШАТЕЛЬ:
класс LogUserAccessedPage {
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
}
/**
* Handle the event.
*
* @param UserAccessedPage $event
* @return void
*/
public function handle(UserAccessedPage $event)
{
Log::create([
'info' => "User ". ucfirst(Auth::user()->name) . " Accessed Page " . Carbon::now()->format('H:i:s'),
'user' => ucfirst(Auth::user()->name),
'object_affected' => Auth::user()->id,
'ip_address' => '',
'time' => Carbon::now()->format('H:i:s'),
'date' => Carbon::now()->format('Y-m-d')
]);
}
}
Как получить эту переменную $ page моему слушателю, чтобы я мог поместить ее в Log :: create (['info' => $ page])? Я надеюсь, что это имеет смысл, что им просит
В соответствии с поручением кода для моего UserAccessedPage:
class UserAccessedPage extends Event
{
use SerializesModels;
public $page;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($page)
{
$this->page = $page;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return [];
}
Моего EventServiceProvider прояснить некоторую путаницу
protected $listen = [
'App\Events\UserLoggedIn' => [
'App\Listeners\LogUserLoggedIn',
],
'App\Events\UserLoggedOut' => [
'App\Listeners\LogUserLoggedOut',
],
'App\Events\UserAccessedPage' => [
'App\Listeners\LogUserAccessedPage',
],
];
Можете ли вы показать код для 'UserAccessedPage'? – user3158900
@ user3158900 Sure two secs –
Вы определили в App \ Providers \ EventServiceProvider сопоставление в $ listen? event => прослушиватель? – Adiasz