Magento. Logo

Errores comunes en Magento 2 y cómo corregirlos (II)

Published on : 14 septiembre, 2021
Leave a Comment

Este no es un error tan común como parece, pero a la hora de desarrollar, puede ser algo fastidioso si te encuentras con él. Cuando en el momento de compilación, ésta se detiene y devuelve un mensaje parecido a este:

Errors during compilation:

Company\Extension\Model\Config\Structure\XXXX

Incompatible argument type: Required type: string. Actual type: array; File:

Y a continuación, indica el archivo donde se produce.
Lo mismo que pone Incompatible argument type: Required type: string. Actual type: array; File:, puede poner otros tipos. Lo importante en este caso es tener claro cuál es el tipo actual y el que debería estar.

La solución a este error es simple: editáis el archivo que nos indica, que tendrá un __construct. En él habrá unas líneas justo antes del __construct, que serán más o menos así:

/**

     * Constructor

     *

     * @param \Magento\Framework\Config\FileResolverInterface $fileResolver

     * @param Converter $converter

     * @param \Magento\Config\Model\Config\SchemaLocator $schemaLocator

     * @param \Magento\Framework\Config\ValidationStateInterface $validationState

     * @param CompilerInterface $compiler

     * @param \Magento\Framework\Module\Dir\Reader $dirReader

     * @param array $idAttributes

     * @param string $domDocumentClass

     * @param string $defaultScope

     */

Y después, aparecerá el constructor en sí

public function __construct(

        \Magento\Framework\Config\FileResolverInterface $fileResolver,

        \Magento\Config\Model\Config\Structure\Converter $converter,

        \Magento\Config\Model\Config\SchemaLocator $schemaLocator,

        \Magento\Framework\Config\ValidationStateInterface $validationState,

        CompilerInterface $compiler,

        \Magento\Framework\Module\Dir\Reader $dirReader,

        $fileName = ‘system.xml’,

        $idAttributes = [],

        $domDocumentClass = ‘Magento\Framework\Config\Dom’,

        $defaultScope = ‘global’

    )

En mi caso , faltaba la línea   * @param string $fileName, por lo que generaba ese error. Añadiéndola en el orden correcto, funciona todo. En otras ocasiones, el error está en que los tipos no son los correctos, poniendo que es una cadena cuando lo que recibe es  un array, así que este tipo de mensaje se debe corregir observando primero

/**
* Constructor
*
* @param \Magento\Framework\Config\FileResolverInterface $fileResolver
* @param Converter $converter
* @param \Magento\Config\Model\Config\SchemaLocator $schemaLocator
* @param \Magento\Framework\Config\ValidationStateInterface $validationState
* @param CompilerInterface $compiler
* @param \Magento\Framework\Module\Dir\Reader $dirReader
* @param string $fileName
* @param array $idAttributes
* @param string $domDocumentClass
* @param string $defaultScope
*/

y después, contrastándolo con la información que tenemos en

public function __construct(
\Magento\Framework\Config\FileResolverInterface $fileResolver,
\Magento\Config\Model\Config\Structure\Converter $converter,
\Magento\Config\Model\Config\SchemaLocator $schemaLocator,
\Magento\Framework\Config\ValidationStateInterface $validationState,
CompilerInterface $compiler,
\Magento\Framework\Module\Dir\Reader $dirReader,
$fileName = ‘system.xml’,
$idAttributes = [],
$domDocumentClass = ‘Magento\Framework\Config\Dom’,
$defaultScope = ‘global’
)

0 comments

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.