Я бы настроил систему подписки на модель видео канала. Я использую Vuejs и Laravel 5.3
в моем шаблоне лезвия я положил это
<script>
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
<script>
Все работает нормально в режиме аутентификации (когда пользователь входит в систему), но в гостевом режиме мой компонент vuejs не работает, и я получаю это в своей консоли
ReferenceError: Laravel is not defined
Скриншоты
https://image.ibb.co/bPJCWG/laravel_Vuejs_Error_Guest.jpg
Количество подписчиков исчезает, ничего не работает
это мои коды:
контроллер:
public function show(Request $request, Channel $channel)
{
$response = [
'count' => $channel->subscriptionCount(),
'user_subscribed' => false,
'can_subscribe' => false,
];
if($request->user())
{
$response = array_merge($response, [
'user_subscribed' => $request->user()->isSubscribedTo($channel),
'can_subscribe' => !$request->user()->ownsChannel($channel),
]);
}
return response()->json([
'data' => $response
], 200);
}
Компонент SubscribeButton.vue:
<script>
export default {
data () {
return {
//...
}
},
props: {
//...
},
methods: {
getSubscriptionStatus () {
this.$http.get('/subscription/' + this.channelSlug).then((response) => {
this.subscribers = response.body.data.count;
this.userSubscribed = response.body.data.user_subscribed;
this.canSubscribe = response.body.data.can_subscribe;
})
}
},
mounted () {
this.getSubscriptionStatus();
}
}
Пожалуйста помоги!
это потому что csrf
работает только для аутентифицированных пользователей. Вы должны изменить свою часть JavaScript, чтобы учесть анонимных пользователей, например:
@if (Auth :: check ())
// ваш window.laravel JS здесь
@endif
Других решений пока нет …