panda-fire / core-bundle
此包已废弃且不再维护。未建议替代包。
让这个包高效地组织您的任务
dev-master / 1.0.x-dev
2016-02-01 23:16 UTC
Requires
- php: >=5.4.0
- panda-fire/cloner: 1.0.x-dev
- panda-fire/time-generator: 1.0.x-dev
- panda-fire/validator: 1.0.x-dev
- symfony/expression-language: ~2.7
- symfony/form: ~2.7
- symfony/framework-bundle: ~2.7
- symfony/yaml: ~2.7
- twig/extensions: ~1.2
Requires (Dev)
- phpspec/prophecy: ^1.5
Suggests
- doctrine/doctrine-bundle: ^1.5@dev
- doctrine/orm: ~2.5
This package is not auto-updated.
Last update: 2018-02-27 12:49:07 UTC
README
介绍
想象一下,你有许多任务要执行,每个任务都有自己的截止日期。想象一下,这些任务会告诉你正确的顺序来完成所有事情。想象一下,这些任务会告诉你你正在尝试做不可能的事情。这就是PandaFire的诞生以及它想为你实现的目标。
你所需要知道的就是任务的截止日期和其长度。然后点击。PandaFire将立即告诉你其可行性以及何时做才能尽可能高效。
因为你想完成任务。
安装
通过Composer下载插件
$ composer require panda-fire/core-bundle
启用插件
在app/AppKernel.php
文件中,添加以下行
<?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // other bundles ... new PandaFire\CoreBundle\PandaFireCoreBundle(), return $bundles; }
使用XML创建用户和任务类
用户
<!-- AppBundle/Resources/config/doctrine/User.orm.xml --> <?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\User" table="user"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <!-- PandaFire required properties --> <field name="startWorkingHour" type="integer" column="start_working_hour" /> <field name="endWorkingHour" type="integer" column="end_working_hour" /> <field name="startBreakHour" type="integer" column="start_break_hour" /> <field name="endBreakHour" type="integer" column="end_break_hour" /> <field name="daysOff" type="array" column="days_off" nullable="true" /> <one-to-many target-entity="AppBundle\Entity\Task" mapped-by="owner" field="timeSortableItems" /> <!-- End PandaFire required properties --> </entity> </doctrine-mapping>
<?php // src/AppBundle/Entity/User.php namespace AppBundle\Entity; use PandaFire\CoreBundle\Model\TaskOwner; class User extends TaskOwner { // your custom logic }
任务
<!-- AppBundle/Resources/config/doctrine/Task.orm.xml --> <?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\Task" table="task" repository-class="PandaFire\CoreBundle\Repository\ORM\TimeSortableItemRepository"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <many-to-one target-entity="User" field="owner" inversed-by="timeSortableItems"> <join-column on-delete="CASCADE" /> </many-to-one> </entity> </doctrine-mapping>
<?php // src/AppBundle/Entity/Task.php namespace AppBundle\Entity; use PandaFire\CoreBundle\Model\TimeSortable; class Task extends TimeSortable { /** * @var User */ protected $owner; }
配置
配置PandaFireCoreBundle
panda_fire_core: db_driver: orm # Only driver supported at the moment task_class: AppBundle\Entity\Task # Your "task" object class
运行迁移
使用以下命令更新你的模式
$ php app/console doctrine:schema:update --force
更进一步
与FOSUserBundle集成
- 安装并配置FOSUserBundle
- 创建实体
- 启用包
- 更新数据库模式
步骤1:FOSUserBundle安装和配置
按照相关文档中的说明安装FOSUserBundle。一旦一切正常,请继续以下步骤。
步骤2:创建实体
按照以下方式将所需属性添加到你的Resources/config/doctrine/User.orm.xml
模型配置文件中
<?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\User"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <!-- PandaFire --> <field name="startWorkingHour" type="integer" column="start_working_hour" /> <field name="endWorkingHour" type="integer" column="end_working_hour" /> <field name="startBreakHour" type="integer" column="start_break_hour" /> <field name="endBreakHour" type="integer" column="end_break_hour" /> <field name="daysOff" type="array" column="days_off" nullable="true" /> <!-- End PandaFire --> <one-to-many target-entity="Task" mapped-by="owner" field="timeSortableItems" /> </entity> </doctrine-mapping>
要轻松添加类的getters/setters,只需使用提供的Trait即可
<?php namespace AppBundle\Entity; use FOS\UserBundle\Model\User as FOSUser; use PandaFire\CoreBundle\Model\TaskOwnerTrait; class User extends FOSUser { use TaskOwnerTrait; }
从AppBundle/Resources/config/doctrine/Task.orm.xml
中的映射文件开始创建Task
实体...
<?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="AppBundle\Entity\Task" repository-class="PandaFire\CoreBundle\Repository\ORM\TimeSortableItemRepository"> <id name="id" type="integer"> <generator strategy="AUTO" /> </id> <many-to-one target-entity="User" field="owner" inversed-by="timeSortableItems"> <join-column on-delete="CASCADE" /> </many-to-one> </entity> </doctrine-mapping>
以及其实体文件在AppBundle/Entity/Task.php
<?php namespace AppBundle\Entity; use PandaFire\CoreBundle\Model\TimeSortable; class Task extends TimeSortable { /** * @var User */ protected $owner; }
注意,属性$owner
不必定义,但使类型提示对开发者更友好;)
步骤3:启用包
在app/AppKernel.php
文件中启用插件
<?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // other bundles ... new AppBundle\AppBundle(), new FOS\UserBundle\FOSUserBundle(), new PandaFire\CoreBundle\PandaFireCoreBundle(), return $bundles; }
在app/config/config.yml
中配置包
panda_fire_core: db_driver: orm # Only supported driver at the moment task_class: AppBundle\Entity\Task # You task entity class
步骤4:更新数据库模式
只需运行以下命令
$ php app/console doctrine:schema:update --force
然后,就这样!