Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Laravel 5.4 Kalendarz
Forum PHP.pl > Forum > PHP
K3n0
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
r4xz
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.
K3n0
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.
r4xz
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
K3n0
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?
r4xz
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)
K3n0
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.