php सिम्फनी 3.4 मेरे बंडल के अंदर का उपयोग करें



symfony symfony-3.4 (1)

मुझे सिम्फनी 3.4 का उपयोग करके एक नए भंडार के विन्यास के लिए कुछ परेशानी है। मैंने पिछले एलटीएस (3.4) के साथ उसे बनाने के लिए सिम्फनी कमांड का उपयोग किया है और मैं कमांड का उपयोग करके एक नया बंडल भी जोड़ता हूं। मेरा नया बंडल ऊपर है और अच्छी तरह से काम कर रहा है लेकिन मैं इस बंडल के अंदर संग्रहीत दृश्य का उपयोग नहीं कर सकता।

मैं आपको अपने बंडल की संरचना दिखाता हूं:

मैं अपने नियंत्रक में इस index.html.twig का उपयोग इस तरह करना चाहता हूं:

<?php

namespace Lister\ListerBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class DefaultController extends Controller
{
    /**
     * @Route("/lister")
     */
    public function indexAction()
    {
        return $this->render('ListerListerBundle:Default:index.html.twig');
    }
}

लेकिन जब मैं इसे रेंडर करने की कोशिश करता हूं तो मुझे यह त्रुटि होती है।

"ListerListerBundle: Default: index.html.twig" (इस पर ध्यान दिया गया: / home / emendiel / Data / Code / Perso / WebLister / app / Resources / Views / home / emendiel / Data / Code / Perso / WebLister / विक्रेता / सिम्फोनी / सिम्फोनी / src / Symfony / पुल / टहनी / संसाधन / विचारों / फॉर्म)।

मैं समझता हूं कि वह क्या कहता है, मेरा फ़ोल्डर वह नहीं है जहां सिम्फनी मेरे विचार को खोजती है, लेकिन मुझे यह नहीं मिला कि मैं सिम्फनी को "लिस्टरबंडल / रीसस / व्यूज" में कैसे कह सकता हूं

मेरी सबसे पुरानी परियोजना में जो अन्य विन्यास के बिना काम कर रही थी।

जानकारी: मैं अपने बंडल का उपयोग पुन: प्रयोज्य बंडल के रूप में करता हूं।

सादर,

पुनश्च: यह मेरा ऑटोलैड हिस्सा है संगीतकार।जसन में

"autoload": {
    "psr-4": {
        "": "src/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

PSS: मेरा ऐप कर्नेल:

public function registerBundles()
{
    $bundles = [
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        new Symfony\Bundle\TwigBundle\TwigBundle(),
        new Symfony\Bundle\MonologBundle\MonologBundle(),
        new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
        new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new AppBundle\AppBundle(),
        new Lister\ListerBundle\ListerListerBundle(),
    ];
...

और फिर से: यहाँ मेरी निर्भरता है

और फ़ाइलों की सामग्री:

configuration.php

<?php

namespace Lister\ListerBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

/**
 * This is the class that validates and merges configuration from your app/config files.
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/configuration.html}
 */
class Configuration implements ConfigurationInterface
{
    /**
     * {@inheritdoc}
     */
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('lister_lister');

        // Here you should define the parameters that are allowed to
        // configure your bundle. See the documentation linked above for
        // more information on that topic.

        return $treeBuilder;
    }
}

ListerListerExtension.php

<?php

namespace Lister\ListerBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration.
 *
 * @link http://symfony.com/doc/current/cookbook/bundles/extension.html
 */
class ListerListerExtension extends Extension
{
    /**
     * {@inheritdoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

हल: @Cerad से

@ ListerLister / डिफ़ॉल्ट / index.html.twig

मूल प्रतिक्रिया @ चेरड से

किसी कारण के लिए, S3.4 को अब बंडल पसंद नहीं है: Dir: नाम निर्दिष्ट करने के लिए टहनी पथ और उत्पन्न: बंडल कमांड अभी तक अपडेट नहीं किया गया है। यकीन नहीं है कि यह एक बग या सुविधा है। @ ListerLister / Default / index.html.twig ऊपर दिए गए पथ पर काम करना चाहिए। बिन / कंसोल डिबग आज़माएं: अपने टहनी नामस्थान पथ को देखने के लिए टहनी। - सेराड


मूल समस्या यह है कि S3.4 में, 'ListerListerBundle: Default: index.html.twig' जैसे टहनी टेम्पलेट पथ अब समर्थित नहीं हैं।

नियंत्रक के साथ पथ को बदलें:

'@ListerLister/Default/index.html.twig'

और सब ठीक होना चाहिए। यदि आप कभी भी निश्चित नहीं हैं कि वास्तविक नामस्थान उपसर्ग फिर क्या है:

bin/console debug:twig

उन्हें सूचीबद्ध करने के लिए।

S3.3 अभी भी ठीक काम करता है इसलिए यह कुछ ऐसा है जो 3.4 में बदल गया है। माना जाता है कि नामांकित प्रारूप का उपयोग वैसे भी किया जा सकता है, इसलिए यह कोई बड़ी बात नहीं है।

मैंने github पर इस बारे में एक समस्या दर्ज की: https://github.com/sensiolabs/SensioGeneratorBundle/issues/587

हम देखेंगे कि अनुरक्षकों को क्या कहना है।

अपडेट: महान और शक्तिशाली फैबपॉट ने खुद मेरे मुद्दे का जवाब दिया। यदि आप टेम्प्लेट के लिए 'ListerListerBundle: Default: index.html.twig' फॉर्मेट का उपयोग करते रहना चाहते हैं तो अपने ऐप / कॉन्फिग / config.yml फ़ाइल को संपादित करें:

# app/config/config.yml
framework:
    templating:
        engines: ['twig']

आपको केवल यही करना चाहिए यदि आपके पास विरासत कोड है जो अभी भी पुराने प्रारूप का उपयोग करता है। सभी नए कोड के लिए टहनी नामस्थान का उपयोग करें।