Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Verified Reviews Bundle Laravel Package

ekyna/verified-reviews-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Install via Composer

    composer require ekyna/verified-reviews-bundle
    

    Ensure ekyna/product-bundle is also installed (dependency).

  2. Enable the Bundle Add to config/bundles.php:

    Ekyna\VerifiedReviewsBundle\EkynaVerifiedReviewsBundle::class => ['all' => true],
    
  3. Run Migrations

    php bin/console doctrine:migrations:diff
    php bin/console doctrine:migrations:migrate
    
  4. First Use Case Display verified reviews on a product page:

    {% for review in product.verifiedReviews %}
        <div class="verified-review">
            <h4>{{ review.title }}</h4>
            <div class="rating">{{ review.rating }}/5</div>
            <p>{{ review.content }}</p>
            <small>Verified {{ review.createdAt|date('M d, Y') }}</small>
        </div>
    {% endfor %}
    

Implementation Patterns

Core Workflows

  1. Review Submission Extend Ekyna\ProductBundle\Form\Type\ReviewType to add verification logic:

    $builder->add('isVerified', HiddenType::class, [
        'data' => $this->isUserVerified($user),
    ]);
    
  2. Verification Logic Override Ekyna\VerifiedReviewsBundle\Service\ReviewVerifier to implement custom rules:

    public function isVerified(User $user, Product $product): bool
    {
        return $user->hasPurchased($product) && $user->isEmailVerified();
    }
    
  3. Displaying Reviews Fetch verified reviews via repository:

    $verifiedReviews = $this->reviewRepository->findVerifiedByProduct($product);
    
  4. Admin Management Use EkynaVerifiedReviewsBundle:Admin\ReviewAdmin for SonataAdmin integration:

    # config/packages/sonata_admin.yaml
    sonata_admin:
        options:
            models:
                Ekyna\VerifiedReviewsBundle\Entity\Review: ~
    

Integration Tips

  • Frontend Integration Use Twig extensions (ekyna_verified_reviews) for dynamic rendering:

    {{ ekyna_verified_reviews(product) }}
    
  • API Exposure Add to your API resource:

    public function toArray($request, Product $product, $format = null)
    {
        return [
            'verified_reviews' => $product->getVerifiedReviews()->toArray(),
        ];
    }
    
  • Event Listeners Trigger actions on review verification:

    public static function getSubscribedEvents()
    {
        return [
            EkynaVerifiedReviewsBundle::REVIEW_VERIFIED => 'onReviewVerified',
        ];
    }
    

Gotchas and Tips

Pitfalls

  1. Missing Dependencies Ensure ekyna/product-bundle is installed and configured before using this bundle. Check for:

    composer why-not ekyna/product-bundle
    
  2. Verification Logic Overrides If extending ReviewVerifier, ensure your logic doesn’t conflict with existing constraints:

    // Avoid this anti-pattern:
    public function isVerified(User $user, Product $product): bool {
        return true; // Bypasses all checks!
    }
    
  3. Database Schema Conflicts If customizing the Review entity, regenerate migrations:

    php bin/console make:migration
    
  4. Caching Issues Verified reviews may not update immediately if cached. Clear cache after changes:

    php bin/console cache:clear
    

Debugging Tips

  • Verify Entity Mapping Check if the Review entity is properly mapped:

    php bin/console debug:container ekyna_verified_reviews.review.manager
    
  • Log Verification Decisions Add debug logs in ReviewVerifier:

    $this->logger->debug('User verified?', ['user_id' => $user->getId(), 'product_id' => $product->getId()]);
    
  • Test with Fixtures Use Hirzel\FixturesBundle to populate test data:

    # data/fixtures/reviews.yml
    Ekyna\VerifiedReviewsBundle\Entity\Review:
        review1:
            product: "@product1"
            user: "@verified_user"
            rating: 5
            isVerified: true
    

Extension Points

  1. Custom Verification Criteria Create a decorator for ReviewVerifier:

    $container->register('ekyna_verified_reviews.review_verifier.decorated', ReviewVerifierDecorator::class)
        ->addArgument('ekyna_verified_reviews.review_verifier')
        ->addTag('ekyna_verified_reviews.review_verifier');
    
  2. Additional Review Fields Extend the Review entity:

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $isFeatured;
    
  3. Frontend Styling Override Twig templates in templates/EkynaVerifiedReviewsBundle/ to customize rendering.

  4. API Filters Add custom filters for API responses:

    $this->add('verified_only', BooleanFilter::class, [
        'property' => 'isVerified',
        'operator' => 'eq',
        'value' => true,
    ]);
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity