Я новичок в Laravel и OctoberCMS, есть много документации по обоим, но поскольку у меня нет большого понимания того или другого, я бы очень признателен за некоторую помощь. Также довольно странно пытаться понять и то и другое одновременно, тем более что документации о laravel гораздо больше, чем в октябре.
В настоящее время я хочу расширить плагин (Ссылка на расширение документации к плагину). Мне нужно использовать сеанс (имя пользователя или адрес электронной почты) из плагина пользователя rainlab (Ссылка на их Git) и вставьте его в другой плагин.
Я обновляю другой плагин, который в настоящее время использует пользователей, которые вводят свое имя через форму и заменяют его своим именем пользователя или адресом электронной почты после входа в систему.
My Layout содержит сеанс пользовательского плагина:
{% component 'session' %}
Сеанс пользовательского плагина отлично работает на остальных моих страницах, но я получил ошибку ‘value not found’ с моими предыдущими попытками использовать его с плагином.
Я знаю, что мне нужно либо связать плагины, либо создать новый, извлечь имя пользователя (или адрес электронной почты) из базы данных пользователей и вставить его в другую таблицу, просто не могу понять, как это сделать. Что еще хуже, у меня нет опыта работы с MVC!
Добавил эту функцию (из примера, который я нашел) на страницу второго плагина Plugin.php:
plugin.php
public function boot()
{
Event::listen('rainlab.user.register', function($user) {
// Code to register $user->email to mailing list
});
}
Но я получил ошибку «Не определено».
Я также попытался добавить файл Routes.php, так как думал, что может быть проблема с промежуточным ПО.
routes.php
Route::get('/test', function () {
dd(
Auth::getUser(),
BackendAuth::getUser()
);
})->middleware('web');
Получил эту ошибку:
«Вызов неопределенного метода RainLab \ User \ Facades \ Auth :: getUser ()»
Я целую неделю бьюсь головой об стену, и любые советы или объяснения будут очень полезны. Если вам требуются какие-либо другие биты кода, пожалуйста, дайте мне знать. Я не добавил больше фрагментов кода, поскольку знаю, что эти фрагменты не работали (ходить по кругу, это было бы немного беспорядочно и бесполезно), и я не хочу спамить код на этой странице. Я показал биты выше, чтобы попытаться объяснить некоторые предыдущие мыслительные процессы. Кроме того, это начало моего проекта, и мало что изменилось по сравнению с общим кодом, доступным вам из OctoberCMS и пользовательских плагинов.
Я полагаю, что объяснение и некоторая помощь здесь пойдут на пользу многим людям, я вижу, что я не единственный, у кого есть проблемы, отчасти из-за изменений в последней версии laravel.
Любые мысли и объяснения будут высоко ценится.
ОБНОВИТЬ:
Чтобы было понятнее, где мне нужно, чтобы мой сеанс появлялся, я включил приведенный ниже код. $name
должен быть заменен новой переменной, такой как электронная почта или имя пользователя (из сеанса).
компоненты \ Chat.php
$name = 'anonymous';
if ($n = Input::get('name')) {
$name = strip_tags($n);
}
$message = new Message(['text'=>$text, 'user_id'=>$user_id, 'name'=>$name]);
$message->save();
return $this->getMessagesOutput($message->id, [$message]);
}
Это будет действительно легко, если вы добавляете session
в макете {% component 'session' %}
Теперь на всей странице вы можете использовать {{ user.email }}
прямо в веточку, чтобы получить user email
если вам нужно использовать с помощью PHP
ты можешь использовать Auth facade
this code
должен меня component which are included in page which is using that layout
или в его life-cycle methods
// Returns the signed in user
$user = Auth::getUser();
echo $user->email;
Вы не можете напрямую использовать маршрут, потому что маршрут separate
от исполнения страницы так Auth
не будет работать там.
«Мне нужно использовать сеанс (имя пользователя или адрес электронной почты) из плагина пользователя rainlab (ссылка на его Git) и вставить его в другой плагин».
просто создайте новый компонент с этим кодом и включите его в страницу.
Можете ли вы поделиться информацией о том, что вам нужно сделать и как вы делаете, чтобы получить детали и в какое время вам нужно использовать эти детали, чтобы я мог ответить на них точно.
// by default name
$name = 'anonymous';
$user_id = 0; // if user is not logged in
// if user is logged in then use session
if($sessionUser = \Auth::getUser()) {
// if user didn't set name then you can assign some default value here or email
$name = $sessionUser->name != '' ? $sessionUser->name : $sessionUser->email;
$user_id = $sessionUser->id;
}
// not needed but if user want to edit its name then we use that one
if ($n = Input::get('name')) {
$name = strip_tags($n);
}
$message = new Message(['text'=>$text, 'user_id'=>$user_id, 'name'=>$name]);
$message->save();
return $this->getMessagesOutput($message->id, [$message]);
Других решений пока нет …