cunningsoft/message-bundle

A user-to-user message bundle for Symfony2

Installs: 70

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 3

Forks: 1

Open Issues: 2

Type:symfony-bundle

dev-master / 0.1.x-dev 2017-07-07 06:02 UTC

This package is auto-updated.

Last update: 2024-04-12 08:40:50 UTC


README

  1. Add the following to your composer.json file:

    // composer.json
    {
        // ...
        require: {
            // ...
            "cunningsoft/message-bundle": "0.1.*"
        }
    }
  2. Run composer update cunningsoft/message-bundle to install the new dependencies.

  3. Register the new bundle in your AppKernel.php:

    <?php
    // in AppKernel::registerBundles()
    $bundles = array(
        // ...
        new Cunningsoft\MessageBundle\CunningsoftMessageBundle(),
        // ...
    );
  4. Let your user entity implement the Cunningsoft\MessageBundle\Entity\UserInterface:

    // Acme\ProjectBundle\Entity\User.php
    <?php
    
    namespace Acme\ProjectBundle\Entity;
    
    use Cunningsoft\MessageBundle\Entity\UserInterface as MessageUserInterface;
    
    class User implements MessageUserInterface
    {
        /**
         * @var int
         */
        protected $id;
    
        /**
         * @var string
         */
        protected $username;
    
        /**
         * @return int
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return string
         */
        public function getUsername()
        {
            return $this->username;
        }
        // ...
  5. Map the interface to your user entity in your config.yml:

    // app/config/config.yml
    // ...
    doctrine:
        orm:
            resolve_target_entities:
                Cunningsoft\MessageBundle\Entity\UserInterface: Acme\ProjectBundle\Entity\User
  6. Update your database schema:

    $ app/console doctrine:schema:update
  7. Import routes:

    // app/config/routing.yml
    // ...
    cunningsoft_message_bundle:
        resource: "@CunningsoftMessageBundle/Controller"
        type: annotation
  8. Link to the messages list:

    // src/Acme/ProjectBundle/Resources/views/Default/index.html.twig
    // ...
    <a href="{{ path('cunningsoft_message_list') }}">messages</a>
    // ...
  9. Create a child bundle to fetch users

    mkdir src/Acme/MessageBundle
    
    // src/Acme/MessageBundle/AcmeMessageBundle.php
    <?php
    
    namespace Acme\MessageBundle;
    
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    
    class AcmeMessageBundle extends Bundle
    {
        public function getParent()
        {
            return 'CunningsoftMessageBundle';
        }
    }
    // src/Acme/MessageBundle/Controller/MessageController.php
    <?php
    
    namespace Acme\MessageBundle\Controller;
    
    use Cunningsoft\MessageBundle\Controller\MessageController as BaseController;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    
    /**
     * @Route("/message")
     */
    class MessageController extends BaseController
    {
        public function findUser($id)
        {
            return $this->get('doctrine.orm.entity_manager')->getRepository('AcmeProjectBundle:User')->find($id);
        }
    
        public function findAllUsers()
        {
            return $this->get('doctrine.orm.entity_manager')->getRepository('AcmeProjectBundle:User')->findAll();
        }
    }

Changelog

  • 0.1 (master) First working version.