Installation
composer require ccetc/directory-bundle
Enable the bundle in config/bundles.php:
return [
// ...
CCETC\DirectoryBundle\CCETCDirectoryBundle::class => ['all' => true],
];
Database Migrations Run migrations to create required tables:
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
First Use Case: Basic Directory Listing
Producer entity (if not auto-generated) extending CCETC\DirectoryBundle\Entity\Producer.config/packages/sonata_admin.yaml:
sonata_admin:
options:
models:
CCETC\DirectoryBundle\Entity\Producer: ~
/admin/producer to manage listings.Producer Management
/admin/producer.Producer entity (e.g., add website, logo):
// src/Entity/Producer.php
use CCETC\DirectoryBundle\Entity\Producer as BaseProducer;
class Producer extends BaseProducer {
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $website;
}
Search & Filtering
{{ knp_menu_render('main_directory_menu', { depth: 1 }) }}
ProducerRepository:
public function findByLocation($location) {
return $this->createQueryBuilder('p')
->where('p.location LIKE :loc')
->setParameter('loc', "%$location%")
->getQuery()
->getResult();
}
Frontend Integration
{% for producer in producers %}
<div class="producer-card">
<h3>{{ producer.name }}</h3>
<p>{{ producer.description }}</p>
{% if producer.logo %}
<img src="{{ asset(producer.logo) }}" alt="{{ producer.name }}">
{% endif %}
</div>
{% endfor %}
Spam Protection
isometriks_spam in config/packages/isometriks_spam.yaml:
isometriks_spam:
enabled: true
models:
CCETC\DirectoryBundle\Entity\Producer: ~
Deprecated Symfony 2.x Dependencies
symfony/form:>=2.1,<2.3-dev). For Symfony 4/5/6:
EasyAdminBundle or AdminerBundle.config/services.yaml to use modern equivalents.Missing Doctrine ORM Config
doctrine/orm is installed and configured in config/packages/doctrine.yaml:
doctrine:
orm:
mappings:
ccetc_directory:
type: attribute
dir: "%kernel.project_dir%/vendor/ccetc/directory-bundle/Resources/config/doctrine"
prefix: 'CCETC\DirectoryBundle\Entity'
alias: CCETCDirectory
Knplabs Menu Conflicts
knp-menu throws errors, explicitly configure it in config/packages/knp_menu.yaml:
knp_menu:
twig:
template: CCETCDirectoryBundle::menu.html.twig
User Bundle Dependency
ccetc/directory-user-bundle (dev-master). Pin a stable version or fork:
composer require ccetc/directory-user-bundle:dev-stable
Admin Panel Not Loading
php bin/console cache:clear
config/routes/sonata_admin.yaml.Spam Bundle Errors
config/packages/isometriks_spam.yaml:
isometriks_spam:
enabled: false
Custom Fields Not Saving
@ORM\Column and getter/setter methods exist.Custom Producer Fields
Producer entity and update Sonata Admin configuration:
# config/packages/sonata_admin.yaml
sonata_admin:
options:
models:
App\Entity\ExtendedProducer:
list:
fields: [name, website, logo, customField]
Override Twig Templates
vendor/ccetc/directory-bundle/Resources/views/ to templates/CCETCDirectoryBundle/ and modify.Add Custom Categories
Category entity or create a new entity with a many-to-many relationship to Producer.API Endpoints
JsonResponse to expose producers as JSON:
// src/Controller/ProducerController.php
use Symfony\Component\HttpFoundation\JsonResponse;
class ProducerController extends AbstractController {
public function listProducers(): JsonResponse {
$producers = $this->getDoctrine()->getRepository(Producer::class)->findAll();
return new JsonResponse($producers);
}
}
How can I help you explore Laravel packages today?