Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Laravel 5.4 Kalendarz, Błąd podczas pobierania czasu eventu
K3n0
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.05.2016

Ostrzeżenie: (0%)
-----


Witam,
Mam problem z pobieraniem danych start i end. Chodzi mi o to, że gdy pobieram dane z bazy tytuł eventu pobiera się, ale niestety czas podany przez użytkownika nie. Cały event ustawia się na "allDay" mimo, że ustawiony jest na false.
Podczas tworzeniu eventu wszystko jest ok tytul nazwa start i koniec dodaja sie do bazy danych. Już nie wiem gdzie robię błąd. Czy poprostu start i end nie zostają przekazane do kalendarza.

Plik HomeModel.php
  1. namespace App;
  2.  
  3. use Illuminate\Database\Eloquent\Model;
  4.  
  5. class HomeModel extends Model
  6. {
  7. protected $table = 'events'; // you may change this to your name table
  8. public $timestamps = true; // set true if you are using created_at and updated_at
  9. protected $primaryKey = 'id'; // the default is id
  10. }

Controller
  1. namespace App\Http\Controllers;
  2.  
  3. use Illuminate\Http\Request;
  4. use App\HomeModel;
  5. use MaddHatter\LaravelFullcalendar\Event;
  6. use Illuminate\Support\Facades\DB;
  7. use DateTime;
  8.  
  9. class HomeController extends Controller
  10. {
  11. /**
  12.   * Create a new controller instance.
  13.   *
  14.   * @return void
  15.   */
  16. public function __construct()
  17. {
  18. $this->middleware('auth');
  19. }
  20. /**
  21.   * Show the application dashboard.
  22.   *
  23.   * @return \Illuminate\Http\Response
  24.   */
  25. public function index(){
  26. $event = HomeModel::all();
  27.  
  28. foreach ($event as $eve) {
  29. $events[] = \Calendar::event(
  30. $eve->title, //event title
  31. $eve->name,
  32. $eve->start, //start time (you can also use Carbon instead of DateTime)
  33. $eve->end, //end time (you can also use Carbon instead of DateTime)
  34. $eve->id //optionally, you can specify an event ID
  35. );
  36. //die($event);
  37. }
  38. $calendar = \Calendar::addEvents($events)
  39. ->setOptions([
  40. 'FirstDay' => 1,
  41. 'contentheight' => 650,
  42. 'editable' => false,
  43. 'allDay' => false,
  44. 'aspectRatio' => 2,
  45. 'slotLabelFormat' => 'HH:mm:ss',
  46. ])->setCallbacks([]);
  47. return view('home', compact('calendar'));
  48. }
  49. /**
  50.   * Show the form for creating a new resource.
  51.   *
  52.   * @return \Illuminate\Http\Response
  53.   */
  54. public function create()
  55. {
  56. return view('create');
  57. }
  58. /**
  59.   * Store a newly created resource in storage.
  60.   *
  61.   * @param \Illuminate\Http\Request $request
  62.   * @return \Illuminate\Http\Response
  63.   */
  64. public function store(Request $request)
  65. {
  66. $time = explode(" - ", $request->input('daterange'));
  67.  
  68. $event = new HomeModel;
  69. $event->name = $request->input('name');
  70. $event->title = $request->input('title');
  71. $event->start = $time[0];
  72. $event->end = $time[1];
  73. $event->save();
  74.  
  75. $request->session()->flash('success', 'The event was successfully saved!');
  76. return redirect('home/create');
  77. }
  78. }

Widok home.blade.php
  1. @extends('layouts.app')
  2.  
  3. @section('content')
  4.  
  5. @endsection
  6. @section('calendar')
  7. <div class="panel panel-default" >
  8. <div class="panel-body">
  9. <a class="btn btn-default" href="{{ url('/home/create') }}">Create</a>
  10. <a class="btn btn-default" href="{{ url('/home/edit') }}">Edit</a>
  11. <a class="btn btn-default" href="{{ url('/home/delete') }}">Delete</a>
  12. </div>
  13. </div>
  14. <div class="panel-body">
  15. {!! $calendar->calendar() !!}
  16. {!! $calendar->script() !!}
  17. </div>
  18. </div>
  19. @endsection
Go to the top of the page
+Quote Post
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


Nie wiem z której wersji biblioteki korzystasz, nigdy też jej nie używałem, ale tak na szybko znalazłem w repo:
  1. $event = \Calendar::event(
  2. "Valentine's Day", //event title
  3. true, //full day event?
  4. '2015-02-14', //start time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg)
  5. '2015-02-14', //end time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg),
  6. 1, //optional event ID
  7. [
  8. 'url' => 'http://full-calendar.io'
  9. ]
  10. );

Zwróć uwagę na drugi parametr.

--- edit ---
Wygląda na to, że wersja nie ma znaczenia.

Ten post edytował r4xz 4.03.2017, 14:02:09


--------------------
Go to the top of the page
+Quote Post
K3n0
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.05.2016

Ostrzeżenie: (0%)
-----


Tak widziałem to, ale tutaj masz event na cały dzień a z tym problemu nie mam, bo event doposowuje sie dobrze w dzień, ale problem mam tylko z czasem w repo jest też żeby ustawić false i tak zrobiłem i nadal nie wiem czemu nie dziala;/.
A korzystam z paczki mad hatter full calendar do wyswietlania.

Ten post edytował K3n0 4.03.2017, 14:06:21
Go to the top of the page
+Quote Post
r4xz
post
Post #4





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


No z tego co ja widzę to Ty ani true, ani false nie ustawiasz:
  1. foreach ($event as $eve) {
  2. $events[] = \Calendar::event(
  3. $eve->title, //event title
  4. $eve->name, // <--- O TUTAJ! Powinno być false, prawda?
  5. $eve->start, //start time (you can also use Carbon instead of DateTime)
  6. $eve->end, //end time (you can also use Carbon instead of DateTime)
  7. $eve->id //optionally, you can specify an event ID
  8. );
  9. //die($event);
  10. }

Co innego ustawienia wyświetlania, a co innego ustawienia wydarzenia smile.gif


--------------------
Go to the top of the page
+Quote Post
K3n0
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.05.2016

Ostrzeżenie: (0%)
-----


Cytat(r4xz @ 4.03.2017, 14:06:51 ) *
No z tego co ja widzę to Ty ani true, ani false nie ustawiasz:
  1. foreach ($event as $eve) {
  2. $events[] = \Calendar::event(
  3. $eve->title, //event title
  4. $eve->name, // <--- O TUTAJ! Powinno być false, prawda?
  5. $eve->start, //start time (you can also use Carbon instead of DateTime)
  6. $eve->end, //end time (you can also use Carbon instead of DateTime)
  7. $eve->id //optionally, you can specify an event ID
  8. );
  9. //die($event);
  10. }

Co innego ustawienia wyświetlania, a co innego ustawienia wydarzenia smile.gif



A to mam zrobić dodatkową kolumne w bazie dotyczącą allDay i ustawic na false?

Ten post edytował K3n0 4.03.2017, 14:17:43
Go to the top of the page
+Quote Post
r4xz
post
Post #6





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


false powinno być w start i end? No właśnie tam powinna być pełna data wraz z godziną

Przeanalizuj jeszcze raz przykład i porównaj z Twoim wywołaniem... nie wiem jak Ci to lepiej wytłumaczyć.

--- edit ---

tak, możesz utworzyć dodatkową kolumnę przechowującą informację czy wydarzenie jest całodniowe, a następnie przy tworzeniu wydarzenia jaki drugi parametr musisz określić czy ono faktycznie jest całodniowe, póki co podajesz tam nazwę... wpisz w konsoli
Kod
php -r "echo (bool)'abvc';"
i będziesz wiedział dlaczego każde twoje wydarzenie jest traktowane jako całodniowe (podpowiem: taki ciąg znaków po rzutowaniu zwraca 1, czyli prawda - wydarzenie jest całodniowe)

Ten post edytował r4xz 4.03.2017, 14:22:28


--------------------
Go to the top of the page
+Quote Post
K3n0
post
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 3.05.2016

Ostrzeżenie: (0%)
-----


Cytat(r4xz @ 4.03.2017, 14:17:58 ) *
false powinno być w start i end? No właśnie tam powinna być pełna data wraz z godziną

Przeanalizuj jeszcze raz przykład i porównaj z Twoim wywołaniem... nie wiem jak Ci to lepiej wytłumaczyć.

z tym falsem pomyliło mi się;p

Zrobilem tak:
1.Utworzyłem kolumne day parametr bool
2.pozniej w petli jako drugi element wywoluje wlasnie ta kolumne
I niestety ale wyskakuje mi blad moze cos zle zrobilem

DateTime::__construct(): Failed to parse time string (aaaaaaaaaaa) at position 0 (cool.gif: The timezone could not be found in the database


Już działa dzięki za pomoc. Miałeś racje ze drugim argument musi byc false.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:09