Add the following to your composer.json file:
// composer.json
{
// ...
require: {
// ...
"cunningsoft/message-bundle": "0.1.*"
}
}
Run composer update cunningsoft/message-bundle to install the new dependencies.
Register the new bundle in your AppKernel.php:
<?php
// in AppKernel::registerBundles()
$bundles = array(
// ...
new Cunningsoft\MessageBundle\CunningsoftMessageBundle(),
// ...
);
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;
}
// ...
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
Update your database schema:
$ app/console doctrine:schema:update
Import routes:
// app/config/routing.yml
// ...
cunningsoft_message_bundle:
resource: "@CunningsoftMessageBundle/Controller"
type: annotation
Link to the messages list:
// src/Acme/ProjectBundle/Resources/views/Default/index.html.twig
// ...
<a href="{{ path('cunningsoft_message_list') }}">messages</a>
// ...
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();
}
}
How can I help you explore Laravel packages today?