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

I18N Routing Bundle Laravel Package

benatespina/i18n-routing-bundle

View on GitHub
Deep Wiki
Context7

In memory strategy

This cookbook will try to show how is a basic in memory implementation of ParametersResolver.

Parameters resolver interface allows to centralize and decouple the route building from your storage strategy so, is highly recommended.

// src/AppBundle/Resolver/AwesomeParametersResolver.php

namespace AppBundle\Resolver;

use BenatEspina\I18nRoutingBundle\Resolver\ParametersResolver;

class AwesomeParametersResolver implements ParametersResolver
{
    const IN_MEMORY_DB = [
        [
            'id'           => 1,
            'translations' => [
                [
                    'id'       => 1,
                    'title'    => 'Homepage',
                    'slug'     => '',
                    'locale'   => 'en',
                ],
                [
                    'id'       => 2,
                    'title'    => 'Inicio',
                    'slug'     => '',
                    'locale'   => 'es',
                ],
            ],
        ], [
            'id'           => 2,
            'translations' => [
                [
                    'id'       => 3,
                    'title'    => 'Contact',
                    'slug'     => 'contact',
                    'locale'   => 'en',
                ],
                [
                    'id'       => 4,
                    'title'    => 'Contacto',
                    'slug'     => 'contacto',
                    'locale'   => 'es',
                ],
            ],
        ],
    ];

    public function resolve($fromLocale, $toLocale, array &$parameters)
    {
        $slug = $parameters['slug'];
        
        foreach (self::IN_MEMORY_DB as $page) {
            if ($parameters['slug'] !== $slug) {
                break;
            }
            
            $translations = $page['translations']; // Aux trans to iterate with clean indexes

            foreach ($page['translations'] as $translation) {
                if ($translation['slug'] === $slug && $translation['locale'] === $fromLocale) {
                    foreach ($translations as $trans) {
                        if ($trans['locale'] === $toLocale) {
                            $parameters['slug'] = $trans['slug'];
                            break;
                        }
                    }
                    break;
                }
            }
        }
    }
}
  • For more information about Doctrine ORM parameters resolver strategy check this cookbook.
  • Back to the index.
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.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui