carlescliment / light-news-bundle
一个简单、轻量级的新闻或博客文章处理包
Requires
- php: >=5.3.2
- sensio/framework-extra-bundle: >=v2.1.5
- symfony/symfony: >=2.0.12
This package is not auto-updated.
Last update: 2024-09-14 14:31:27 UTC
README
此包提供了一个轻量级的框架来处理新闻或博客文章,无需安装像Sonata这样的重型包。LightNewsBundle的目的是允许开发者添加自己的逻辑,而无需处理CRUD操作的管理。
LightNewsBundle与Symfony 2.1兼容,几乎没有依赖。
安装
1. 更新您的供应商
将以下行添加到您的composer.json
"require": {
"carlescliment/light-news-bundle": "dev-master"
}
执行php composer.phar update carlescliment/light-news-bundle
2. 在app/AppKernel.php
中加载此包
$bundles = array(
// Your other bundles
new BladeTester\LightNewsBundle\BladeTesterLightNewsBundle(),
);
3. 修改您的app/config/routing.yml
blade_tester_light_news_bundle:
resource: "@BladeTesterLightNewsBundle/Resources/config/routing.yml"
prefix: /news #choose the prefix you want
配置您自己的新闻包
1. 创建自己的包,覆盖LightNewsBundle
namespace My\NewsBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MyNewsBundle extends Bundle
{
public function getParent()
{
return 'BladeTesterLightNewsBundle';
}
}
2. 映射一个新闻类
创建一个实体并继承基本新闻类。您必须添加的唯一强制性字段是“id”,以正确映射您的实体。
注意:目前它仅与Doctrine兼容。贡献以提供其他驱动程序将非常受欢迎。
namespace My\NewsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use BladeTester\LightNewsBundle\Entity\News as BaseNews;
/**
* @ORM\Entity()
* @ORM\Table(name="news")
*/
class News extends BaseNews {
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
public function getId() {
return $this->id;
}
}
3. 在app/config/config.yml
文件中设置您的新闻类
blade_tester_light_news:
driver: doctrine/orm
engine: twig
classes:
news:
entity: 'My\NewsBundle\Entity\News'
4. 更新您的数据库模式
app/console doctrine:schema:update --force
基本用法
LightNewsBundle提供了基本的CRUD管理。处理允许或禁止用户管理新闻的安全性取决于您。
默认情况下,您可以访问以下路由
- {prefix}/ -> 首页
- {prefix}/{id} -> 显示一条新闻
- {prefix}/admin -> 管理首页
- {prefix}/admin/add -> 创建一条新闻。
- {prefix}/admin/{id}/remove -> 删除id为{id}的新闻。
- {prefix}/admin/{id}/edit -> 编辑id为{id}的新闻。
覆盖包
LightNewsBundle旨在易于覆盖。您可以像通常覆盖Symfony中的包一样覆盖它。
模板
放置一个与同名的模板,在同一目录下,并且Symfony将加载它而不是默认模板。例如,您可以覆盖默认的模板Default/base.html.twig,并继承您的基应用模板。
控制器
在您的包中放置一个同名控制器,以覆盖默认行为
路由
您还可以覆盖路由或定义新的路由。
表单
LightNewsBundle提供了一个默认表单来管理基本实体。如果您创建了具有额外字段的实体,您将需要使用自定义表单。只需在您的app/config/config.yml
文件中配置它即可
blade_tester_light_news:
driver: doctrine/orm
engine: twig
classes:
news:
entity: Your\NewsBundle\Entity\News
forms:
news:
class: Your\NewsBundle\Form\YourCustomForm
管理器
如果您打算自定义LightNewsBundle,您可能需要使用NewsManager服务。以下是一个示例,将更好地解释它
public function yourCustomAction()
{
$manager = $this->get('blade_tester_light_news.news_manager')
$news = $manager->build(); // builds a non-persisted instance of your News class.
$news = $manager->create('Title', 'body'); // builds and persists a piece of news.
$news = $manager->find(33); // Retrieves the instance with id 33 from the database
$manager->remove($news); // Removes a news instance
$all_news = $manager->findAll(); // Retrieves all the instances from the database
$manager->refresh($news); // Uses the entity manager to refresh the item
}
致谢
- 作者:Carles Climent
- 贡献者:Fran Moreno
贡献和反馈
请随时提供此包的反馈。贡献将非常受欢迎。