Revelation каза:А извикал ли си библиотеката?
Как да го направя?
Revelation каза:А извикал ли си библиотеката?
teroristd каза:Отказах се от vue и вместо това направих таймера с jquery. Сложих клик функция на бутона, сметнах времето и т.н. обаче изникна един проблем. Рут-а на бутона сочи към функцията в която викам queue-то, и за това на края на функцията завършвам с return redirect()->back(); за да се върна на главния рут. Обаче така прецаквам клик-а на jquery-то, то се стартира и спира защото след рефреша не е кликнато. Какво мога да направя?
Fakeheal каза:teroristd каза:Отказах се от vue и вместо това направих таймера с jquery. Сложих клик функция на бутона, сметнах времето и т.н. обаче изникна един проблем. Рут-а на бутона сочи към функцията в която викам queue-то, и за това на края на функцията завършвам с return redirect()->back(); за да се върна на главния рут. Обаче така прецаквам клик-а на jquery-то, то се стартира и спира защото след рефреша не е кликнато. Какво мога да направя?
Я обясни с код
//Това е главния рут който връща вю-то.
Route::get('/home', 'HomeController@index')->name('home');
//Това е рута за ъпдейта на сградата
Route::get('/home/goldMineUpdate', [
'uses' => 'HomeController@goldMineUpdate',
'as' => 'gold.mine.update'
]);
public function goldMineUpdate()
{
$job = (new CreateGoldMineJob($user_id))->delay(300);
dispatch($job);
Session::flash('success', 'The gold mine was updated successfuly');
return redirect()->back();
}
@php
date_default_timezone_set('Europe/Sofia');
$date = date('Y-m-d H:i:s');
$currentDate = strtotime($date);
$futureDate = $currentDate + (60 * 5);
$formatDate = date("Y-m-d H:i:s", $futureDate);
@endphp
@if($mine->gold_mine == 0)
@php $time = $formatDate; @endphp
@endif
<a href="{{route('gold.mine.update')}}" id="target_one">
Update
</a>
<script>
var time = {!! json_encode($time) !!}
$("#target_one").click(function () {
$('#clock').countdown(time, function (event) {
var totalHours = event.offset.totalDays * 24 + event.offset.hours;
$(this).html(event.strftime(totalHours + ' ч. %M мин. %S сек.'));
});
});
</script>
$("#target_one").click(function (event) {
event.preventDefault();
//$.ajax() blah blah
//в success() на ajax-a сложи countdown и покажи нотификацията, че е почнало (туй що подаваш в сешън->flash()
$('#clock').countdown(time, function (event) {
var totalHours = event.offset.totalDays * 24 + event.offset.hours;
$(this).html(event.strftime(totalHours + ' ч. %M мин. %S сек.'));
});
});
$("#target_one").click(function (event) {
event.preventDefault();
$.ajax({
type:'GET',
url:'/home/goldMineUpdate',
success:function(){
var time = {!! json_encode($time) !!}
$('#clock').countdown(time, function (event) {
var totalHours = event.offset.totalDays * 24 + event.offset.hours;
$(this).html(event.strftime(totalHours + ' ч. %M мин. %S сек.'));
});
}
});
}
teroristd каза:вади грешка.
PHP:<div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) </script>
<div id="app">
@{{ message }}
</div>
teroristd каза:Ajax-a по-принцип не ми е сила . Така ли трябва да стане.
Код:$("#target_one").click(function (event) { event.preventDefault(); $.ajax({ type:'GET', url:'/home/goldMineUpdate', success:function(){ var time = {!! json_encode($time) !!} $('#clock').countdown(time, function (event) { var totalHours = event.offset.totalDays * 24 + event.offset.hours; $(this).html(event.strftime(totalHours + ' ч. %M мин. %S сек.')); }); } }); }
Това за респонса не го разбрах. Също и това за флаш-а.
Revelation каза:teroristd каза:Вече закъсах . За да подкарам vue трябва ли да инсталирам нещо? Като цяло идеята ми е да вържа dispatch()->delay() с брояч за да се вижда колко време остава до построяването на сградата. Това дали може да стане с vue или да търся друго решение?
...
Навръзването може да е много лесно, може да е и много сложно. Така или иначе трябва да записваш някъде постоянно или в определен event изминалото време. Естествено, не е добра идея да е в базата данни.
В момента за такива неща е най-готино да се ползва Redis или някоя друга NoSQL база данни.
А връзката с Vue може да е през broadcasting-а на Laravel или AJAX заявки.
Не съм чел цялата тема, постът ми е насочен конкретно към тоя ти пост...teroristd каза:Fakeheal каза:teroristd каза:Отказах се от vue и вместо това направих таймера с jquery. Сложих клик функция на бутона, сметнах времето и т.н. обаче изникна един проблем. Рут-а на бутона сочи към функцията в която викам queue-то, и за това на края на функцията завършвам с return redirect()->back(); за да се върна на главния рут. Обаче така прецаквам клик-а на jquery-то, то се стартира и спира защото след рефреша не е кликнато. Какво мога да направя?
Я обясни с код
При клик се изпълнява рута на ъпдейта, а при redirect()->back() се връща на главния, което рефрешва страницата, и jquery таймера който е стартиран при клика, след рефреша изчезва.
Искам само да добавя че delay-а на Job-a няма нищо общо с jquery таймера, който ще го използвам просто да визуализира необходимото време за построяването на сградата.
И още нещо да добавя , ако няма клик функция на jquery таймера той си се стартира веднага и рефреша не му пречи, но така не ми върши работа.
PHP://Това е главния рут който връща вю-то. Route::get('/home', 'HomeController@index')->name('home'); //Това е рута за ъпдейта на сградата Route::get('/home/goldMineUpdate', [ 'uses' => 'HomeController@goldMineUpdate', 'as' => 'gold.mine.update' ]);
Не съм дал целия код на метода защото той няма отношение към въпроса.
PHP:public function goldMineUpdate() { $job = (new CreateGoldMineJob($user_id))->delay(300); dispatch($job); Session::flash('success', 'The gold mine was updated successfuly'); return redirect()->back(); }
Това е блейда. Пак не съм дал целия код, но грубо часовника получава времето и при клик почва да тече.
PHP:@php date_default_timezone_set('Europe/Sofia'); $date = date('Y-m-d H:i:s'); $currentDate = strtotime($date); $futureDate = $currentDate + (60 * 5); $formatDate = date("Y-m-d H:i:s", $futureDate); @endphp @if($mine->gold_mine == 0) @php $time = $formatDate; @endphp @endif <a href="{{route('gold.mine.update')}}" id="target_one"> Update </a> <script> var time = {!! json_encode($time) !!} $("#target_one").click(function () { $('#clock').countdown(time, function (event) { var totalHours = event.offset.totalDays * 24 + event.offset.hours; $(this).html(event.strftime(totalHours + ' ч. %M мин. %S сек.')); }); }); </script>
pix3l каза:Не съм чел цялата тема, постът ми е насочен конкретно към тоя ти пост...
Какво ти пречи при зареждането на страницата да проверяваш дали се строи сграда и да пускаш таймера ако има такава. Ако няма нищо за строене, закачаш клик евента и готово.
Аз поне така ти разбрах проблема.
Revelation каза:Навръзването може да е много лесно, може да е и много сложно. Така или иначе трябва да записваш някъде постоянно или в определен event изминалото време. Естествено, не е добра идея да е в базата данни.
В момента за такива неща е най-готино да се ползва Redis или някоя друга NoSQL база данни.