ต้องการสร้างปฏิทินออนไลน์เพื่อให้คุณสามารถแสดงบนแอพปฏิทินของ iPhone หรือใน Google ปฏิทิน? สิ่งนี้สามารถทำได้โดยการสร้างปฏิทินในรูปแบบ icalendar (RFC 5545) รูปแบบข้อความที่สามารถโหลดได้โดยแอปพลิเคชันที่แตกต่างกัน
รูปแบบของปฏิทินดังกล่าวถูกกำหนดไว้ใน RFC 5545 ซึ่งไม่ใช่ประสบการณ์การอ่านที่น่าพอใจ แพ็คเกจนี้ใช้ RFC 5545 และส่วนขยายบางส่วนจาก RFC 7986 เพื่อให้ API ใช้งานง่ายสำหรับการสร้างปฏิทิน ไม่ใช่ความตั้งใจของเราที่จะใช้ RFC เหล่านี้ทั้งหมด แต่เพื่อให้ API ที่ตรงไปตรงมาซึ่งใช้งานง่าย
นี่คือตัวอย่างของวิธีการใช้:
use Spatie IcalendarGenerator Components Calendar ;
use Spatie IcalendarGenerator Components Event ;
Calendar :: create ( ' Laracon online ' )
-> event ( Event :: create ( ' Creating calender feeds ' )
-> startsAt ( new DateTime ( ' 6 March 2019 15:00 ' ))
-> endsAt ( new DateTime ( ' 6 March 2019 16:00 ' ))
)
-> get ();
รหัสด้านบนจะสร้างสตริงนี้:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:spatie/icalendar-generator
NAME:Laracon online
X-WR-CALNAME:Laracon online
BEGIN:VEVENT
UID:5ef5c3f64cb2c
DTSTAMP;TZID=UTC:20200626T094630
SUMMARY:Creating calendar feeds
DTSTART:20190306T150000Z
DTEND:20190306T160000Z
DTSTAMP:20190419T135034Z
END:VEVENT
END:VCALENDAR
เราลงทุนทรัพยากรจำนวนมากเพื่อสร้างแพ็คเกจโอเพนซอร์สที่ดีที่สุด คุณสามารถสนับสนุนเราได้โดยการซื้อผลิตภัณฑ์ที่ชำระเงินของเรา
เราขอขอบคุณที่คุณส่งโปสการ์ดจากบ้านเกิดของคุณโดยกล่าวถึงแพ็คเกจใดที่คุณใช้ คุณจะพบที่อยู่ของเราในหน้าติดต่อของเรา เราเผยแพร่โปสการ์ดที่ได้รับทั้งหมดบนกำแพงโปสการ์ดเสมือนจริงของเรา
คุณสามารถติดตั้งแพ็คเกจผ่านนักแต่งเพลง:
composer require spatie/icalendar-generator
มีการเปลี่ยนแปลงอย่างมากระหว่าง V1 และ V2 ของแพ็คเกจ ตรวจสอบคู่มือการอัพเกรดสำหรับข้อมูลเพิ่มเติม
นี่คือวิธีที่คุณสามารถสร้างปฏิทิน:
$ calendar = Calendar :: create ();
คุณสามารถตั้งชื่อให้กับปฏิทิน:
$ calendar = Calendar :: create ( ' Laracon Online ' );
คำอธิบายสามารถเพิ่มลงในปฏิทิน:
$ calendar = Calendar :: create ()
-> name ( ' Laracon Online ' )
-> description ( ' Experience Laracon all around the world ' );
ในท้ายที่สุดคุณต้องการแปลงปฏิทินเป็นข้อความเพื่อให้สามารถสตรีมหรือดาวน์โหลดไปยังผู้ใช้ นี่คือวิธีที่คุณทำ:
Calendar :: create ( ' Laracon Online ' )-> get (); // BEGIN:VCALENDAR ...
เมื่อสตรีมมิ่งปฏิทินไปยังแอปพลิเคชันเป็นไปได้ที่จะตั้งค่าช่วงการรีเฟรชของปฏิทินภายในระยะเวลาไม่กี่นาที เมื่อตั้งค่าสิ่งนี้แอปพลิเคชันปฏิทินจะตรวจสอบเซิร์ฟเวอร์ของคุณทุกครั้งหลังจากระยะเวลาที่กำหนดสำหรับการเปลี่ยนแปลงปฏิทิน:
Calendar :: create ( ' Laracon Online ' )
-> refreshInterval ( 5 )
. . .
เหตุการณ์สามารถสร้างได้ดังนี้ ไม่จำเป็นต้องมีชื่อ แต่ควรกำหนดวันที่เริ่มต้น:
Event :: create ( ' Laracon Online ' )
-> startsAt ( new DateTime ( ' 6 march 2019 ' ));
คุณสามารถตั้งค่าคุณสมบัติต่อไปนี้ในกิจกรรม:
Event :: create ()
-> name ( ' Laracon Online ' )
-> description ( ' Experience Laracon all around the world ' )
-> uniqueIdentifier ( ' A unique identifier can be set here ' )
-> createdAt ( new DateTime ( ' 6 march 2019 ' ))
-> startsAt ( new DateTime ( ' 6 march 2019 15:00 ' ))
-> endsAt ( new DateTime ( ' 6 march 2019 16:00 ' ));
ต้องการสร้างเหตุการณ์อย่างรวดเร็วด้วยวันที่เริ่มต้นและสิ้นสุดหรือไม่?
Event :: create ( ' Laracon Online ' )
-> period ( new DateTime ( ' 6 march 2019 ' ), new DateTime ( ' 7 march 2019 ' ));
คุณสามารถเพิ่มตำแหน่งลงในเหตุการณ์ดังกล่าว:
Event :: create ()
-> address ( ' Kruikstraat 22, 2018 Antwerp, Belgium ' )
-> addressName ( ' Spatie HQ ' )
-> coordinates ( 51.2343 , 4.4287 )
. . .
คุณสามารถตั้งค่าผู้จัดงานที่อยู่อีเมลได้ แต่สามารถละเว้นชื่อได้:
Event :: create ()
-> organizer ( ' [email protected] ' , ' Ruben ' )
. . .
ผู้เข้าร่วมงานสามารถเพิ่มได้เช่น:
Event :: create ()
-> attendee ( ' [email protected] ' ) // only an email address is required
-> attendee ( ' [email protected] ' , ' Brent ' )
. . .
นอกจากนี้คุณยังสามารถตั้งค่าสถานะการมีส่วนร่วมของผู้เข้าร่วม:
Event :: create ()
-> attendee ( ' [email protected] ' , ' Ruben ' , ParticipationStatus :: accepted ())
. . .
มีห้าสถานะการมีส่วนร่วม:
ParticipationStatus::accepted()
ParticipationStatus::declined()
ParticipationStatus::tentative()
ParticipationStatus::needs_action()
ParticipationStatus::delegated()
คุณสามารถระบุได้ว่าผู้เข้าร่วมจะต้องใช้ RSVP ไปยังกิจกรรม:
Event :: create ()
-> attendee ( ' [email protected] ' , ' Ruben ' , ParticipationStatus :: needs_action (), requiresResponse: true )
. . .
เหตุการณ์สามารถทำให้เกิดความโปร่งใสดังนั้นจึงไม่ทับซ้อนกันกับเหตุการณ์อื่น ๆ ในปฏิทิน:
Event :: create ()
-> transparent ()
. . .
เป็นไปได้ที่จะสร้างเหตุการณ์ที่ครอบคลุมทั้งวัน:
Event :: create ()
-> fullDay ()
. . .
สถานะของเหตุการณ์สามารถตั้งค่าได้:
Event :: create ()
-> status ( EventStatus :: cancelled ())
. . .
มีสามสถานะเหตุการณ์:
EventStatus::confirmed()
EventStatus::cancelled()
EventStatus::tentative()
เหตุการณ์สามารถจัดประเภท ( public
, private
, confidential
) เช่น:
Event :: create ()
-> classification ( Classification :: private ())
. . .
คุณสามารถเพิ่มไฟล์แนบ URL ได้เช่น:
Event :: create ()
-> attachment ( ' https://spatie.be/logo.svg ' )
-> attachment ( ' https://spatie.be/feed.xml ' , ' application/json ' )
. . .
คุณสามารถเพิ่มไฟล์แนบที่ฝังตัว (Base64) ได้เช่น:
Event :: create ()
-> embeddedAttachment ( $ file -> toString ())
-> embeddedAttachment ( $ fileString , ' application/json ' )
-> embeddedAttachment ( $ base64String , ' application/json ' , needsEncoding: false )
. . .
คุณสามารถเพิ่มรูปภาพได้เช่น:
Event :: create ()
-> image ( ' https://spatie.be/logo.svg ' )
-> image ( ' https://spatie.be/logo.svg ' , ' text/svg+xml ' )
-> image ( ' https://spatie.be/logo.svg ' , ' text/svg+xml ' , Display :: badge ())
. . .
มีการแสดงภาพที่แตกต่างกันสี่ประเภท:
Display::badge()
Display::graphic()
Display::fullsize()
Display::thumbnail()
หลังจากสร้างกิจกรรมของคุณควรเพิ่มลงในปฏิทิน มีหลายตัวเลือกในการทำเช่นนี้:
// As a single event parameter
$ event = Event :: create ( ' Creating calendar feeds ' );
Calendar :: create ( ' Laracon Online ' )
-> event ( $ event )
. . .
// As an array of events
Calendar :: create ( ' Laracon Online ' )
-> event ([
Event :: create ( ' Creating calender feeds ' ),
Event :: create ( ' Creating contact lists ' ),
])
. . .
// As a closure
Calendar :: create ( ' Laracon Online ' )
-> event ( function ( Event $ event ){
$ event -> name ( ' Creating calender feeds ' );
})
. . .
คุณสามารถใช้ห้องสมุดคาร์บอนยอดนิยม:
use Carbon Carbon ;
Event :: create ( ' Laracon Online ' )
-> startsAt ( Carbon :: now ())
. . .
เหตุการณ์จะใช้เขตเวลาที่กำหนดไว้ในวัตถุ DateTime
ที่คุณมีให้ PHP ตั้งค่าเขตเวลาเหล่านี้เสมอในวัตถุ DateTime
โดยค่าเริ่มต้นนี่จะเป็นเขตเวลา UTC แต่เป็นไปได้ที่จะเปลี่ยนสิ่งนี้
เพียงแค่การเตือนความจำ: อย่าใช้ฟังก์ชั่น setTimezone
ของ PHP บนวัตถุ DateTime
มันจะเปลี่ยนเวลาตามเขตเวลา! มันจะดีกว่าที่จะสร้างวัตถุ DateTime
ใหม่ที่มีเขตเวลาเช่นนี้:
new DateTime ( ' 6 march 2019 15:00 ' , new DateTimeZone ( ' Europe/Brussels ' ))
จุดสามารถทำเพื่อละเว้นเขตเวลา ตัวอย่างเช่นเมื่อคุณต้องการแสดงเหตุการณ์ตอนเที่ยงในโลก เรากำหนดเที่ยงตอน 12 นาฬิกา แต่เวลานั้นเป็นเรื่องสัมพันธ์กัน มันไม่เหมือนกันสำหรับคนในเบลเยียมออสเตรเลียหรือประเทศอื่น ๆ ในโลก
นั่นเป็นเหตุผลที่คุณสามารถปิดการใช้งานเขตเวลาในกิจกรรม:
$ starts = new DateTime ( ' 6 march 2019 12:00 ' )
Event :: create ()
-> startsAt ( $ starts )
-> withoutTimezone ()
. . .
คุณสามารถปิดการใช้งานเขตเวลาสำหรับปฏิทินทั้งหมด:
Calendar :: create ()
-> withoutTimezone ()
. . .
แต่ละปฏิทินควรมีส่วนประกอบเขตเวลาที่อธิบายถึงเขตเวลาที่ใช้ภายในปฏิทินของคุณ แม้ว่าลูกค้าปฏิทินทั้งหมดจะไม่ต้องการสิ่งนี้ แต่ก็ขอแนะนำให้เพิ่มส่วนประกอบเหล่านี้
การสร้างส่วนประกอบเขตเวลาดังกล่าวค่อนข้างซับซ้อน นั่นเป็นเหตุผลที่แพ็คเกจนี้จะเพิ่มพวกเขาโดยอัตโนมัติโดยไม่ต้องกำหนดค่า
คุณสามารถปิดการใช้งานพฤติกรรมนี้ได้เช่น:
Calendar :: create ()
-> withoutAutoTimezoneComponents ()
. . .
คุณสามารถเพิ่มเขตเวลาด้วยตนเองในปฏิทินได้ด้วยตนเองหากต้องการเช่นนี้:
$ timezoneEntry = TimezoneEntry :: create (
TimezoneEntryType :: daylight (),
new DateTime ( ' 23 march 2020 ' ),
' +00:00 ' ,
' +02:00 '
);
$ timezone = Timezone :: create ( ' Europe/Brussels ' )
-> entry ( $ timezoneEntry )
. . .
Calendar :: create ()
-> timezone ( $ timezone )
. . .
เพิ่มเติมเกี่ยวกับเขตเวลาเหล่านี้ในภายหลัง
การแจ้งเตือนอนุญาตให้ลูกค้าปฏิทินส่งการแจ้งเตือนเกี่ยวกับเหตุการณ์เฉพาะ ตัวอย่างเช่น Apple Mail บน iPhone จะส่งการแจ้งเตือนผู้ใช้เกี่ยวกับเหตุการณ์ การแจ้งเตือนเป็นของเหตุการณ์มักจะมีคำอธิบายและหลายนาทีก่อนที่เหตุการณ์จะถูกเรียกใช้:
Event :: create ( ' Laracon Online ' )
-> alertMinutesBefore ( 5 , ' Laracon online is going to start in five minutes ' );
นอกจากนี้คุณยังสามารถกระตุ้นการแจ้งเตือนหลังจากเหตุการณ์:
Event :: create ( ' Laracon Online ' )
-> alertMinutesAfter ( 5 , ' Laracon online has ended, see you next year! ' );
หรือทริกเกอร์การแจ้งเตือนในวันที่เฉพาะ:
Event :: create ( ' Laracon Online ' )
-> alertAt (
new DateTime ( ' 05/16/2020 12:00:00 ' ),
' Laracon online has ended, see you next year! '
);
การลบเขตเวลาในปฏิทินหรือเหตุการณ์จะลบเขตเวลาในการแจ้งเตือน
เป็นไปได้สำหรับกิจกรรมที่จะทำซ้ำตัวอย่างเช่นอาหารค่ำของ บริษัท รายเดือนของคุณ สามารถทำได้เช่น:
Event :: create ( ' Laracon Online ' )
-> repeatOn ( new DateTime ( ' 05/16/2020 12:00:00 ' ));
และคุณสามารถทำซ้ำกิจกรรมในชุดของวันที่:
Event :: create ( ' Laracon Online ' )
-> repeatOn ([ new DateTime ( ' 05/16/2020 12:00:00 ' ), new DateTime ( ' 08/13/2020 15:00:00 ' )]);
กฎการเกิดซ้ำหรือ rrule ในระยะสั้นทำให้เป็นไปได้ที่จะเพิ่มเหตุการณ์ซ้ำในปฏิทินของคุณโดยอธิบายเมื่อมันทำซ้ำภายใน rrule ก่อนอื่นเราต้องสร้าง rrule:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: daily ());
กฎนี้อธิบายเหตุการณ์ที่จะทำซ้ำทุกวัน นอกจากนี้คุณยังสามารถตั้งค่าความถี่เป็น secondly
minutely
hourly
weekly
monthly
หรือ yearly
RRULE สามารถเพิ่มเข้าไปในเหตุการณ์เช่นนี้:
Event :: create ( ' Laracon Online ' )
-> rrule ( RRule :: frequency ( RecurrenceFrequency :: monthly ()));
เป็นไปได้ที่จะทำให้ rrule มีรสนิยมส่วนตัวของคุณ; มาดูกันเถอะ!
rrule สามารถเริ่มต้นจากจุดหนึ่งในเวลา:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: daily ())-> starting ( new DateTime ( ' now ' ));
และหยุดที่จุดหนึ่ง:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: daily ())-> until ( new DateTime ( ' now ' ));
มันสามารถทำซ้ำได้สองสามครั้ง 10 ครั้งตัวอย่างเช่น:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: daily ())-> times ( 10 );
ช่วงเวลาของการทำซ้ำสามารถเปลี่ยนแปลงได้:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: daily ())-> interval ( 2 );
เมื่อเหตุการณ์นี้เริ่มต้นในวันจันทร์ตัวอย่างเช่นการทำซ้ำครั้งต่อไปของเหตุการณ์นี้จะไม่เกิดขึ้นในวันอังคาร แต่วันพุธ คุณสามารถทำเช่นเดียวกันกับความถี่ทั้งหมด
นอกจากนี้ยังเป็นไปได้ที่จะทำซ้ำกิจกรรมในวันธรรมดา:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onWeekDay (
RecurrenceDay :: friday ()
);
หรือในวันธรรมดาของสัปดาห์ในเดือนนี้:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onWeekDay (
RecurrenceDay :: friday (), 3
);
หรือในวันธรรมดาของเดือน:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onWeekDay (
RecurrenceDay :: sunday (), - 1
);
คุณสามารถทำซ้ำในวันที่เฉพาะเจาะจงในเดือน:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onMonthDay ( 16 );
เป็นไปได้ที่จะให้วันในเดือน:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onMonthDay (
[ 5 , 10 , 15 , 20 ]
);
สามารถทำซ้ำได้ในบางเดือน (ตัวอย่างเช่นในไตรมาสที่สองเท่านั้น):
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onMonth (
[ RecurrenceMonth :: april (), RecurrenceMonth :: may (), RecurrenceMonth :: june ()]
);
หรือเพียงแค่หนึ่งเดือนเท่านั้น:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> onMonth (
RecurrenceMonth :: october ()
);
เป็นไปได้ที่จะตั้งค่าวันเมื่อสัปดาห์เริ่ม:
$ rrule = RRule :: frequency ( RecurrenceFrequency :: monthly ())-> weekStartsOn (
ReccurenceDay :: monday ()
);
คุณสามารถระบุวันที่เฉพาะที่เหตุการณ์จะไม่ซ้ำ:
Event :: create ( ' Laracon Online ' )
-> rrule ( RRule :: frequency ( RecurrenceFrequency :: daily ()))
-> doNotRepeatOn ( new DateTime ( ' 05/16/2020 12:00:00 ' ));
นอกจากนี้ยังเป็นไปได้ที่จะให้อาร์เรย์ของวันที่ที่เหตุการณ์ไม่ซ้ำ:
Event :: create ( ' Laracon Online ' )
-> rrule ( RRule :: frequency ( RecurrenceFrequency :: daily ()))
-> doNotRepeatOn ([ new DateTime ( ' 05/16/2020 12:00:00 ' ), new DateTime ( ' 08/13/2020 15:00:00 ' )]);
หรือคุณสามารถเพิ่ม rrules เป็นสตริง:
Event :: create ( ' SymfonyCon ' )
-> rruleAsString ( ' FREQ=DAILY;INTERVAL=1 ' );
หากคุณเพิ่ม rrules เป็นสตริงเวลาที่อยู่ใน DTStart และจนกว่าจะไม่ทราบว่าแพ็คเกจเนื่องจากสตริงจะไม่แยกวิเคราะห์และประเมินผล หากเป็นที่รู้จักคุณสามารถเพิ่ม DTSTART และจนกว่าจะแยกต่างหากเพื่อช่วยให้แพ็คเกจค้นพบเขตเวลา:
Event :: create ( ' SymfonyCon ' )
-> rruleAsString (
' DTSTART=20231207T090000Z;FREQ=DAILY;INTERVAL=1;UNTIL=20231208T090000Z ' ,
new DateTime ( ' 7 december 2023 09:00:00 ' , new DateTimeZone ( ' UTC ' )),
new DateTime ( ' 8 december 2023 09:00:00 ' , new DateTimeZone ( ' UTC ' ))
);
คุณสามารถใช้การตอบสนอง laravel เพื่อสตรีมไปยังแอปพลิเคชันปฏิทิน:
$ calendar = Calendar :: create ( ' Laracon Online ' );
return response ( $ calendar -> get ())
-> header ( ' Content-Type ' , ' text/calendar; charset=utf-8 ' );
หากคุณต้องการเพิ่มความเป็นไปได้สำหรับผู้ใช้ในการดาวน์โหลดปฏิทินและนำเข้าสู่แอปพลิเคชันปฏิทิน:
$ calendar = Calendar :: create ( ' Laracon Online ' );
return response ( $ calendar -> get (), 200 , [
' Content-Type ' => ' text/calendar; charset=utf-8 ' ,
' Content-Disposition ' => ' attachment; filename="my-awesome-calendar.ics" ' ,
]);
หากคุณต้องการสร้างส่วนประกอบของเขตเวลาด้วยตัวคุณเองคุณอยู่ในตำแหน่งที่เหมาะสมแม้ว่าเราจะแนะนำให้คุณอ่านส่วนเกี่ยวกับเขตเวลาจาก RFC ก่อน
คุณสามารถสร้างเขตเวลาได้เช่น:
$ timezone = Timezone :: create ( ' Europe/Brussels ' );
เป็นไปได้ที่จะให้วันที่แก้ไขล่าสุด:
$ timezone = Timezone :: create ( ' Europe/Brussels ' )
-> lastModified ( new DateTime ( ' 16 may 2020 12:00:00 ' ));
หรือเพิ่ม URL พร้อมข้อมูลเพิ่มเติมเกี่ยวกับเขตเวลา:
$ timezone = Timezone :: create ( ' Europe/Brussels ' )
-> url ( ' https://spatie.be ' );
เขตเวลาประกอบด้วยหลายรายการที่เวลาของเขตเวลาเปลี่ยนไปเมื่อเทียบกับ UTC สามารถสร้างรายการดังกล่าวได้ตามเวลามาตรฐานหรือเวลากลางวัน:
$ entry = TimezoneEntry :: create (
TimezoneEntryType :: standard (),
new DateTime ( ' 16 may 2020 12:00:00 ' ),
' +00:00 ' ,
' +02:00 '
);
ประการแรกคุณให้ประเภทของรายการ ( standard
หรือ daylight
) จากนั้น DateTime
เมื่อเวลาเปลี่ยนไป สุดท้ายออฟเซ็ตที่สัมพันธ์กับ UTC จากก่อนการเปลี่ยนแปลงและออฟเซ็ตที่สัมพันธ์กับ UTC หลังจากการเปลี่ยนแปลง
นอกจากนี้ยังเป็นไปได้ที่จะให้ชื่อและคำอธิบายรายการนี้:
$ entry = TimezoneEntry :: create (...)
-> name ( ' Europe - Brussels ' )
-> description ( ' Belgian timezones ftw! ' );
rrule สำหรับรายการสามารถให้เช่น:
$ entry = TimezoneEntry :: create (...)
-> rrule ( RRule :: frequency ( RecurrenceFrequency :: daily ()));
ในที่สุดคุณสามารถเพิ่มรายการในเขตเวลา:
$ timezone = Timezone :: create ( ' Europe/Brussels ' )
-> entry ( $ timezoneEntry );
หรือแม้แต่เพิ่มหลายรายการ:
$ timezone = Timezone :: create ( ' Europe/Brussels ' )
-> entry ([ $ timezoneEntryOne , $ timezoneEntryTwo ]);
ตอนนี้เราได้สร้างเขตเวลาของเราถึงเวลา (?) เพื่อเพิ่มเขตเวลานี้ในปฏิทินของเรา:
$ calendar = Calendar :: create ( ' Calendar with timezones ' )
-> timezone ( $ timezone );
นอกจากนี้ยังเป็นไปได้ที่จะเพิ่มเขตเวลาหลายเวลา:
$ calendar = Calendar :: create ( ' Calendar with timezones ' )
-> timezone ([ $ timezoneOne , $ timezoneTwo ]);
เราพยายามทำให้แพ็คเกจนี้ตรงไปตรงมาที่สุดเท่าที่จะทำได้ นั่นเป็นเหตุผลว่าทำไมคุณสมบัติและส่วนย่อยจำนวนมากจาก RFC จึงไม่รวมอยู่ในแพ็คเกจนี้ เราได้ทำให้เป็นไปได้ที่จะเพิ่มคุณสมบัติหรือส่วนประกอบย่อยอื่น ๆ ให้กับแต่ละองค์ประกอบหากคุณอาจต้องการสิ่งที่ไม่รวมอยู่ในแพ็คเกจ แต่ระวัง! จากช่วงเวลานี้คุณกำลังใช้ RFC อย่างถูกต้อง
คุณสามารถเพิ่มคุณสมบัติใหม่ให้กับส่วนประกอบเช่นนี้:
Calendar :: create ()
-> appendProperty (
TextProperty :: create ( ' ORGANIZER ' , ' [email protected] ' )
)
. . .
ที่นี่เราได้เพิ่ม TextProperty
และนี่เป็นประเภทคุณสมบัติคีย์ค่าเริ่มต้นที่มีข้อความเป็นค่า นอกจากนี้คุณยังสามารถใช้คุณสมบัติเริ่มต้นอย่างใดอย่างหนึ่งที่รวมอยู่ในแพ็คเกจหรือสร้างของคุณเองโดยขยายคลาส Property
บางครั้งคุณสมบัติอาจมีพารามิเตอร์เพิ่มเติมบางอย่างเหล่านี้เป็นรายการคีย์-ค่าและสามารถเพิ่มลงในคุณสมบัติเช่น:
$ property = TextProperty :: create ( ' ORGANIZER ' , ' [email protected] ' )
-> addParameter ( Parameter :: create ( ' CN ' , ' RUBEN VAN ASSCHE ' ));
Calendar :: create ()
-> appendProperty ( $ property )
. . .
ส่วนประกอบย่อยสามารถผนวกได้เช่น:
Calendar :: create ()
-> appendSubComponent (
Event :: create ( ' Extending icalendar-generator ' )
)
. . .
เป็นไปได้ที่จะสร้างส่วนประกอบย่อยของคุณโดยขยายคลาส Component
composer test
เราพยายามหา API ที่เรียบง่ายและใช้งานง่าย ต้องการอะไรมากกว่านี้? จากนั้นตรวจสอบแพ็คเกจนี้โดย Markus Poerschke
โปรดดู Changelog สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงไปเมื่อเร็ว ๆ นี้
โปรดดูรายละเอียดที่มีส่วนร่วม
หากคุณพบข้อผิดพลาดเกี่ยวกับความปลอดภัยโปรดส่งจดหมายความปลอดภัย @spatie.be แทนที่จะใช้ตัวติดตามปัญหา
คุณมีอิสระที่จะใช้แพ็คเกจนี้ แต่ถ้ามันทำให้สภาพแวดล้อมการผลิตของคุณเราขอขอบคุณที่คุณส่งโปสการ์ดจากบ้านเกิดของคุณโดยกล่าวถึงแพ็คเกจใดที่คุณใช้
ที่อยู่ของเราคือ: Spatie, Kruikstraat 22, Box 12, 2018 Antwerp, Belgium
เราเผยแพร่โปสการ์ดที่ได้รับทั้งหมดในเว็บไซต์ บริษัท ของเรา
ใบอนุญาต MIT (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม