portrino / px_ical
此包已被弃用且不再维护。未建议替代包。
提供通过eluceo iCal库(https://github.com/markuspoerschke/iCal)渲染ical的类。
0.2.1
2022-01-21 16:18 UTC
Requires
- eluceo/ical: ~0.11.3
- typo3/cms: ^7.6
Requires (Dev)
- nimut/testing-framework: ^1.0
- phpunit/phpunit: ~4.8.0
- squizlabs/php_codesniffer: ~3.0.2
Replaces
- typo3-ter/px_ical: 0.2.1
This package is auto-updated.
Last update: 2024-02-21 21:01:07 UTC
README
提供通过eluceo — iCal库渲染*.ics文件的TYPO3类。
安装
composer require portrino/px_ical
使用
Extbase视图
您可以在动作控制器请求前添加?tx_par_pi1[format]=ical
,extbase会为您渲染相应的视图。通过将ICalView类放入$viewFormatToObjectNameMap
,extbase能够获取到正确的视图类。当您遵循领域驱动设计时,您有一个分配给视图并由不同视图类渲染的领域模型。
通过实现ICalEventInterface
,ICalView类调用需要您实现的__toICalEvent()
方法。您必须在这里返回一个Eluceo\iCal\Component\Event
对象。
use Portrino\PxICal\Mvc\View\ICalView; use TYPO3\CMS\Extbase\Mvc\View\JsonView; class BookingController extends RestController { /** * @var array */ protected $viewFormatToObjectNameMap = [ 'json' => JsonView::class, 'ical' => ICalView::class ]; /** * Action Show * * @param \Foo\Bar\Domain\Model\Booking $booking * * @return void */ public function showAction($booking) { /** * $booking should implement the ICalEventInterface */ $this->view->assign('booking', $booking); } } ... class Booking extends AbstractEntity implements ICalEventInterface { /** * @return Event */ public function __toICalEvent() { $event = new Event(); $event ->setUniqueId('foo_bar_' . (string)$this->getUid()) ->setDtStart($this->getStart()) ->setDtEnd($this->getEnd()); ... return $event; } }
如果您没有领域模型或__toICalEvent()
不适合您的需求,您也可以直接将Eluceo\iCal\Component\Event
对象分配给ICal视图,变量名为vEvent
use Eluceo\iCal\Component\Event; /** * Action Show * * @return void */ public function showAction() { $vEvent = new Event(); $vEvent ->setUniqueId('foo_bar_' . (string)$this->getUid()) ->setDtStart($this->getStart()) ->setDtEnd($this->getEnd()); ... $this->view->assign('vEvent', $vEvent); }
服务
此扩展提供了一种类,可以为您创建一个ical文件并将其放入:/typo3temp/px_ical
文件夹。您只需将类注入到您的控制器中,...然后您可以调用这些方法来生成/删除ical文件。
依赖注入
/** * @var \Portrino\PxICal\Service\ICalFileServiceInterface * @inject */ protected $iCalFileService;
来自领域对象
$file = $this->iCalFileService->createFromDomainObject($booking);
来自事件对象
$file = $this->iCalFileService->create($vEvent);
要删除创建的文件,只需调用逆方法即可
通过领域对象
$file = $this->iCalFileService->removeByDomainObject($booking);
通过事件对象
$file = $this->iCalFileService->remove($vEvent);
作者
另请参阅参与此项目的贡献者列表。