carbon-field-icon icon indicating copy to clipboard operation
carbon-field-icon copied to clipboard

Fatal error after installing with composer

Open peter-brennan opened this issue 5 years ago • 5 comments

Hi, i have used composer to require this plugin, although once it is required I am getting the following fatal error.

[08-Jan-2020 22:23:32 UTC] PHP Fatal error: Uncaught Error: Call to undefined function Carbon_Fields\Provider\add_filter() in /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php:254 Stack trace: #0 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php(21): Carbon_Fields\Provider\Container_Condition_Provider->install_container_conditions(Object(Carbon_Fields\Pimple\Container)) #1 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Pimple/Container.php(274): Carbon_Fields\Provider\Container_Condition_Provider->register(Object(Carbon_Fields\Pimple\Container)) #2 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Carbon_Fields.php(385): Carbon_Fields\Pimple\Container->register(Object(Carbon_Fields\Provider\Container_Condition_Provider)) #3 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Carbon_Fields.php(69): Carbon_Fields\Carbon_Fields::get_default_ioc() #4 /Applications/MAMP/htdocs/bin in /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php on line 254

Any help with this error is appreciated.

Peter

peter-brennan avatar Jan 08 '20 22:01 peter-brennan

Hi, i have used composer to require this plugin, although once it is required I am getting the following fatal error.

[08-Jan-2020 22:23:32 UTC] PHP Fatal error: Uncaught Error: Call to undefined function Carbon_Fields\Provider\add_filter() in /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php:254 Stack trace: #0 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php(21): Carbon_Fields\Provider\Container_Condition_Provider->install_container_conditions(Object(Carbon_Fields\Pimple\Container)) #1 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Pimple/Container.php(274): Carbon_Fields\Provider\Container_Condition_Provider->register(Object(Carbon_Fields\Pimple\Container)) #2 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Carbon_Fields.php(385): Carbon_Fields\Pimple\Container->register(Object(Carbon_Fields\Provider\Container_Condition_Provider)) #3 /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Carbon_Fields.php(69): Carbon_Fields\Carbon_Fields::get_default_ioc() #4 /Applications/MAMP/htdocs/bin in /Applications/MAMP/htdocs/bindi/vendor/htmlburger/carbon-fields/core/Provider/Container_Condition_Provider.php on line 254

Any help with this error is appreciated.

Peter

I had the same problem. Does anyone have any solutions?

AlexandreSA avatar Mar 12 '20 02:03 AlexandreSA

I too am facing the same problem.

Any help would be appreciated.

golchha21 avatar Jun 07 '20 16:06 golchha21

Having the same problem here, any fix ?

Romaixn avatar Aug 19 '21 09:08 Romaixn

Having the same problem here, any fix ?

How do I use [boilerplate bedrock] (https://roots.io/bedrock/). I created a mu-plugin with everything I need and it works fine.

Bootstrap.php

<?php

use Carbon_Fields\Carbon_Fields;
use Carbon_Fields\Pimple\Container as PimpleContainer;
use Carbon_Field_Icon\Icon_Field;
use Carbon_Field_Icon\Providers\Custom_Icon_Provider;

define( 'Carbon_Field_Icon\\VERSION', '3.0.0' );
define( 'Carbon_Field_Icon\\DIR', dirname( __DIR__ ) );

Carbon_Fields::extend( Icon_Field::class, function( $container ) {
	return new Icon_Field( $container['arguments']['type'], $container['arguments']['name'], $container['arguments']['label'] );
} );

Carbon_Fields::instance()->ioc['icon_field_providers'] = function () {
	return new PimpleContainer();
};

Carbon_Fields::instance()->ioc['icon_field_providers'][ 'custom-icons' ] = static function( $container ) {
	return new Custom_Icon_Provider;
};

Icon_Field::add_provider( [ 'custom-icons' ] );

do_action( 'carbon_fields_icon_field_loaded' );

Custom_Icon_Provider.php

<?php

namespace Carbon_Field_Icon\Providers;

class Custom_Icon_Provider implements Icon_Provider_Interface {

	/**
	 * Reads the data and prepares the options for usage.
	 */
	public function parse_options() {
		$options = [];
		$files = glob( get_template_directory() . '/../resources/images/svg-sprite/*.svg' );

		foreach ( $files as $icon ) {
			$file = pathinfo( $icon );

			$options[ $file['filename'] ] = [
				'name' => $file['filename'],
				'icon' => get_template_directory_uri() . "/../resources/images/svg-sprite/{$file['basename']}",
				'id' => 'custom-icon-' . $file['filename'],
				'class' => 'custom-menu-class',
				'search_terms' => [ 'shop', 'checkout', 'product' ],
			];
		}

		return $options;
	}
}

composer.json

{
    ...
    "autoload": {
        "files": [
            "core/bootstrap.php"
        ],
        "psr-4": {
            "Carbon_Field_Icon\\": "core/"
        }
    }
}

AlexandreSA avatar Sep 01 '21 02:09 AlexandreSA

Can you make a repo with your mu-plugin inside @AlexandreSA ? I could test with my configuration to see if it works better this way

Romaixn avatar Sep 02 '21 15:09 Romaixn