অবৈধ ব্লক প্রকার: [নেমস্পেস] \ [মডিউল] \ ব্লক \ টাইমলাইন


11

আমি পাদলেখগুলিতে একটি ব্লক যুক্ত করার চেষ্টা করছি কিন্তু এখনও অবধি এটি ফিরতে থাকবে Invalid block type: [Namespace]\[Module]\Block\Timeline

আমার এখন পর্যন্ত যা আছে তার উত্সটি এখানেও পাওয়া যাবে: https://github.com/sandermangel/magento2-twitterfeed

আমার layout/default.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="footer">
            <block class="[Namespace]\[Module]\Block\Timeline" name="twitterfeed-timeline" template="footer/timeline.phtml"></block>
        </referenceBlock>
    </body>
</page>

এবং আমার ব্লক ক্লাস vendor/[namespace]/[module]/Block/Timeline.php

namespace [Namespace]\[Module]\Block;

use Magento\Framework\View\Element\Template;

class Timeline extends Template
{

    /**
     * Timeline constructor.
     * @param Template\Context $context
     * @param array $data
     */
    public function __construct(
        Template\Context $context,
        array $data = []
    ) {
        parent::__construct($context, $data);
    }

    /**
     * @return mixed
     */
    public function getTweets()
    {
        // ---
    }
}

composer.json

{
  "name": "[namespace]/[module]",
  "description": "Lipsum",
  "version": "0.1.0",
  "license": "OSL-3.0",
  "require": {
    "abraham/twitteroauth": "*"
  },
  "type": "magento2-module",
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/url.git"
    },
    {
      "type": "git",
      "url": "https://github.com/abraham/twitteroauth.git"
    }
  ],
  "autoload": {
    "files": [
      "registration.php"
    ],
    "psr-4": {
      "[Namespace]\\[Module]\\": ""
    }
  }
}

এবং exception.logত্রুটি

[2015-11-29 16:56:55] main.CRITICAL: exception 'Magento\Framework\Exception\LocalizedException' with message 'Invalid block type: [Namespace]\[Module]\Block\Timeline' in vendor/magento/framework/View/Layout/Generator/Block.php:262
Stack trace:
#0 vendor/magento/framework/View/Layout/Generator/Block.php(237): Magento\Framework\View\Layout\Generator\Block->getBlockInstance('[Namespace]\\[Module]...', Array)
#1 vendor/magento/framework/View/Layout/Generator/Block.php(216): Magento\Framework\View\Layout\Generator\Block->createBlock('[Namespace]\\[Module]...', 'twitterfeed-tim...', Array)
#2 vendor/magento/framework/View/Layout/Generator/Block.php(124): Magento\Framework\View\Layout\Generator\Block->generateBlock(Object(Magento\Framework\View\Layout\ScheduledStructure), Object(Magento\Framework\View\Layout\Data\Structure), 'twitterfeed-tim...')
#3 vendor/magento/framework/View/Layout/GeneratorPool.php(86): Magento\Framework\View\Layout\Generator\Block->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#4 vendor/magento/framework/View/Layout.php(327): Magento\Framework\View\Layout\GeneratorPool->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#5 var/generation/Magento/Framework/View/Layout/Interceptor.php(89): Magento\Framework\View\Layout->generateElements()
#6 vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout\Interceptor->generateElements()
#7 vendor/magento/framework/View/Page/Builder.php(55): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#8 vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#9 vendor/magento/framework/View/Page/Config.php(166): Magento\Framework\View\Layout\Builder->build()
#10 vendor/magento/framework/View/Page/Config.php(475): Magento\Framework\View\Page\Config->build()
#11 vendor/magento/framework/View/Page/Config.php(433): Magento\Framework\View\Page\Config->getElementAttribute('body', 'class')
#12 vendor/magento/module-catalog/Helper/Product/View.php(159): Magento\Framework\View\Page\Config->addBodyClass('catalog-product...')
#13 vendor/magento/module-catalog/Helper/Product/View.php(214): Magento\Catalog\Helper\Product\View->initProductLayout(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Magento\Catalog\Model\Product\Interceptor), Object(Magento\Framework\DataObject))
#14 vendor/magento/module-catalog/Controller/Product/View.php(109): Magento\Catalog\Helper\Product\View->prepareAndRender(Object(Magento\Framework\View\Result\Page\Interceptor), 1, Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Magento\Framework\DataObject))
#15 var/generation/Magento/Catalog/Controller/Product/View/Interceptor.php(24): Magento\Catalog\Controller\Product\View->execute()
#16 vendor/magento/framework/App/Action/Action.php(102): Magento\Catalog\Controller\Product\View\Interceptor->execute()
#17 [internal function]: Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#18 vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#19 vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Catalog\Controller\Product\View\Interceptor->___callParent('dispatch', Array)
#20 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Product\View\Interceptor), Array, 'designLoader')
#21 vendor/magento/framework/App/Action/Plugin/Design.php(39): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#22 [internal function]: Magento\Framework\App\Action\Plugin\Design->aroundDispatch(Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#23 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#24 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Product\View\Interceptor), Array, 'customer-app-ac...')
#25 vendor/magento/module-customer/Model/App/Action/ContextPlugin.php(61): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#26 [internal function]: Magento\Customer\Model\App\Action\ContextPlugin->aroundDispatch(Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#27 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#28 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Product\View\Interceptor), Array, 'storeCheck')
#29 vendor/magento/module-store/App/Action/Plugin/StoreCheck.php(44): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#30 [internal function]: Magento\Store\App\Action\Plugin\StoreCheck->aroundDispatch(Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#31 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#32 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Product\View\Interceptor), Array, 'contextPlugin')
#33 vendor/magento/module-store/App/Action/Plugin/Context.php(98): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#34 [internal function]: Magento\Store\App\Action\Plugin\Context->aroundDispatch(Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#35 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#36 vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Catalog...', 'dispatch', Object(Magento\Catalog\Controller\Product\View\Interceptor), Array, 'tax-app-action-...')
#37 vendor/magento/module-tax/Model/App/Action/ContextPlugin.php(91): Magento\Catalog\Controller\Product\View\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#38 [internal function]: Magento\Tax\Model\App\Action\ContextPlugin->aroundDispatch(Object(Magento\Catalog\Controller\Product\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#39 vendor/magento/framework/Interception/Interceptor.php(141): call_user_func_array(Array, Array)
#40 var/generation/Magento/Catalog/Controller/Product/View/Interceptor.php(39): Magento\Catalog\Controller\Product\View\Interceptor->___callPlugins('dispatch', Array, Array)
#41 vendor/magento/framework/App/FrontController.php(55): Magento\Catalog\Controller\Product\View\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#42 [internal function]: Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#43 vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#44 vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#45 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'requestPreproce...')
#46 vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(89): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#47 [internal function]: Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#48 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#49 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#50 vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#51 [internal function]: Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#52 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#53 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'storeCookieVali...')
#54 vendor/magento/module-store/Model/Plugin/StoreCookie.php(78): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#55 [internal function]: Magento\Store\Model\Plugin\StoreCookie->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#56 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#57 vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#58 vendor/magento/module-page-cache/Model/App/FrontController/VarnishPlugin.php(55): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#59 [internal function]: Magento\PageCache\Model\App\FrontController\VarnishPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#60 vendor/magento/framework/Interception/Chain/Chain.php(68): call_user_func_array(Array, Array)
#61 vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#62 vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(68): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#63 [internal function]: Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#64 vendor/magento/framework/Interception/Interceptor.php(141): call_user_func_array(Array, Array)
#65 var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#66 vendor/magento/framework/App/Http.php(115): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#67 vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#68 index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#69 {main} [] []

কী ভুল হতে পারে সে সম্পর্কে কোনও ধারণা প্রশংসিত


'বিক্রেতা / [নেমস্পেস] / [মডিউল] / ব্লক / টাইমলাইন.পিএফ' এই পাথটি 'অ্যাপ / কোড / [নেমস্পেস] / [মডিউল] / ব্লক / টাইমলাইন.পিপি' হওয়া উচিত
সোহেল রানা

লগগুলিতে আপনার কি ত্রুটি আছে?
কান্দি

@ কেডি আমি ব্যতিক্রম লগ দিয়ে আপডেট করেছি। এটি ত্রুটি + ব্যাকট্র্যাস
স্যান্ডার ম্যানগেল

এর অর্থ হল আপনার ক্লাসটি বোঝা যাবে না। আপনার কি সুরকারে নিবন্ধিত মডিউল আছে? আপনি কি সংমিশ্রণ যুক্ত করতে পারেন।
কান্দি

@ কে দেরি জবাবের জন্য দুঃখিত। সংমিশ্রণ করা হয়েছে। তুমি ঠিক বলছো. এটি একটি উদাহরণ পেতে ব্যর্থ হয়েছে Magento\Framework\View\Layout\Generator\Block::getBlockInstanceতবে আমি তা নির্ধারণ করতে পারিনি
স্যান্ডার ম্যানগেল

উত্তর:


12

useক্লাস সংজ্ঞার আগে আমি ব্লক ক্লাসে একটি সংজ্ঞায়িত করেছি । এই ব্যবহারে আমি একটি নেতৃস্থানীয় ভুলে গিয়েছিলাম \যা একটি ত্রুটি ঘটায় । কিন্তু যেহেতু সেই ত্রুটিটি ধরা পড়ে এবং এতে চাপা দেওয়া Magento\Framework\View\Layout\Generator\Block::getBlockInstanceসম্পূর্ণরূপে সম্পর্কযুক্ত ত্রুটি ছুঁড়ে দেয়।

সংক্ষেপে: classসংজ্ঞার উপরে একটি পিএইচপি ত্রুটি সৃষ্টি করার ফলে সর্বদা Invalid block type:ত্রুটি হয়


আমারও এখন একই ধরণের সমস্যা ছিল: আমি কিছু শ্রেণীর জন্য কিছু "ব্যবহার" বিবৃতি ঘোষণা করতে ভুলে গিয়েছিলাম। রিপোর্ট করা "অবৈধ ব্লক প্রকার" এর আসল সমস্যার সাথে কোনও সম্পর্ক ছিল না। এটি বের করতে আমার অনেক সময় লেগেছে।
পেডি

1

আমার কাছে ঠিক করা হয়েছিল যখন আমি ফাইলের নামটি ক্লাসের নাম এবং এক্সএমএল কলের সাথে একই পরিবর্তিত করি। এটার মত:

অ্যাপ্লিকেশন / কোড / Rafaelcg / Smartlook / দৃশ্য / ফ্রন্টএন্ড / লেআউট / default.xml

<referenceContainer name="after.body.start">
            <block class="Rafaelcg\Smartlook\Block\Code" name="smartlook" as="smartlook" template="smartlook.phtml"/>
 </referenceContainer>

অ্যাপ্লিকেশন / কোড / Rafaelcg / Smartlook / ব্লক / Code.php

<?php   

namespace Rafaelcg\Smartlook\Block;

use \Magento\Framework\View\Element\Template;

class Code extends Template
{

0

আপনি যদি নিজের মডিউলটি অন্তর্ভুক্ত করতে সুরকার ব্যবহার করেন তবে এই ত্রুটির আরও একটি সম্ভাব্য কারণ এখানে রয়েছে:

আপনার নিজের মধ্যে একটি ভুল পিএসআর -4 সংজ্ঞা থাকতে পারে composer.json। সাধারণত, এটি দেখতে এইরকম হওয়া উচিত:

"autoload": {
    "psr-4": {
        "Namespace\\Module\\": ""
    }
}

তবে, যদি আপনার মডিউলটির নাম না হয় Module , তবে আপনার অটলয়েডিংটি নষ্ট হয়ে গেছে এবং কোনও শ্রেণি খুঁজে পাওয়া যাবে না। এই ক্ষেত্রে, আপনাকে composer require namespace/moduleসংজ্ঞাটি আপডেট করতে composer.lockএবং আপনার অটোল্যাড ফাইলগুলি পুনরায় উত্পন্ন করতে মডিউলটির নাম ঠিক করতে হবে এবং আবার চালাতে হবে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.