carlescliment/light-news-bundle

一个简单、轻量级的新闻或博客文章处理包

安装量: 9,149

依赖者: 0

建议者: 0

安全性: 0

星标: 3

关注者: 3

分支: 5

开放问题: 1

类型:symfony-bundle

dev-master 2013-07-02 14:58 UTC

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
}

致谢

贡献和反馈

请随时提供此包的反馈。贡献将非常受欢迎。