Skip to main content
Magento

Return to Question

I added the information about the catalog_product_view.xml file
Source Link
MikeMason
  • 1.4k
  • 5
  • 26
  • 47

I'm trying to override the module-catalog/Block/Product/View/Options/Type/Select.php class with a new version which includes a few other bits of custom php. I have done the below and then run the php bin/magento setup:upgrade and php cache:clean commands but the product page is showing a blank/white page.

I created a 'code' folder and placed it here:

/app/code/

I created a Vendor folder titled 'Mike' and placed it here:

/app/code/Mike/

Within the new Mike vendor folder, I created an etc folder: /app/code/Mike/etc/. Within this etc folder, I have added a di.xml file containing the below:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="Magento\Catalog\Block\Product\View\Options\Type\Select" type="Mike\NewSelect\Block\Product\View\Options\Type\Select" />
</config>

I then created a Module folder titled NewSelect and placed it in the Mike vendor folder:

/app/code/Mike/NewSelect/

I then just copied over the directory structure (without the containing files, except for Select.php) of the core Select class and placed it in the NewSelect module folder, resulting in the below:

app/
├── Mike/
│ ├── NewSelect/
│ │ ├── Block/
│ │ │ ├── Product/
│ │ │ │ ├── View/
│ │ │ │ │ ├── Options/
│ │ │ │ │ │ ├── Type/
│ │ │ │ │ │ │ ├── Select.php
│ │ ├── etc/
│ │ │ ├── di.xml

Within my new Select class (app/code/Mike\NewSelect\Block\Product\View\Options\Type\Select.php), I have extended the core Select class with the following:

namespace Mike\NewSelect\Block\Product\View\Options\Type;
class Select extends \Magento\Catalog\Block\Product\View\Options\Type\Select
{
 /**
 * Return html for control element
 *
 * @return string
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
etc etc...

In my Mike/MyTheme/Magento_Catalog/catalog_product_view.xml file, I have updated the calling block:

<block class="Magento\Catalog\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select_hamper.phtml"/>

and changed it to:

<block class="Mike\NewSelect\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select.phtml"/>

Can anyone see where I'm going wrong?

Thank you

I'm trying to override the module-catalog/Block/Product/View/Options/Type/Select.php class with a new version which includes a few other bits of custom php. I have done the below and then run the php bin/magento setup:upgrade and php cache:clean commands but the product page is showing a blank/white page.

I created a 'code' folder and placed it here:

/app/code/

I created a Vendor folder titled 'Mike' and placed it here:

/app/code/Mike/

Within the new Mike vendor folder, I created an etc folder: /app/code/Mike/etc/. Within this etc folder, I have added a di.xml file containing the below:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="Magento\Catalog\Block\Product\View\Options\Type\Select" type="Mike\NewSelect\Block\Product\View\Options\Type\Select" />
</config>

I then created a Module folder titled NewSelect and placed it in the Mike vendor folder:

/app/code/Mike/NewSelect/

I then just copied over the directory structure (without the containing files, except for Select.php) of the core Select class and placed it in the NewSelect module folder, resulting in the below:

app/
├── Mike/
│ ├── NewSelect/
│ │ ├── Block/
│ │ │ ├── Product/
│ │ │ │ ├── View/
│ │ │ │ │ ├── Options/
│ │ │ │ │ │ ├── Type/
│ │ │ │ │ │ │ ├── Select.php
│ │ ├── etc/
│ │ │ ├── di.xml

Within my new Select class (app/code/Mike\NewSelect\Block\Product\View\Options\Type\Select.php), I have extended the core Select class with the following:

namespace Mike\NewSelect\Block\Product\View\Options\Type;
class Select extends \Magento\Catalog\Block\Product\View\Options\Type\Select
{
 /**
 * Return html for control element
 *
 * @return string
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
etc etc...

Can anyone see where I'm going wrong?

Thank you

I'm trying to override the module-catalog/Block/Product/View/Options/Type/Select.php class with a new version which includes a few other bits of custom php. I have done the below and then run the php bin/magento setup:upgrade and php cache:clean commands but the product page is showing a blank/white page.

I created a 'code' folder and placed it here:

/app/code/

I created a Vendor folder titled 'Mike' and placed it here:

/app/code/Mike/

Within the new Mike vendor folder, I created an etc folder: /app/code/Mike/etc/. Within this etc folder, I have added a di.xml file containing the below:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="Magento\Catalog\Block\Product\View\Options\Type\Select" type="Mike\NewSelect\Block\Product\View\Options\Type\Select" />
</config>

I then created a Module folder titled NewSelect and placed it in the Mike vendor folder:

/app/code/Mike/NewSelect/

I then just copied over the directory structure (without the containing files, except for Select.php) of the core Select class and placed it in the NewSelect module folder, resulting in the below:

app/
├── Mike/
│ ├── NewSelect/
│ │ ├── Block/
│ │ │ ├── Product/
│ │ │ │ ├── View/
│ │ │ │ │ ├── Options/
│ │ │ │ │ │ ├── Type/
│ │ │ │ │ │ │ ├── Select.php
│ │ ├── etc/
│ │ │ ├── di.xml

Within my new Select class (app/code/Mike\NewSelect\Block\Product\View\Options\Type\Select.php), I have extended the core Select class with the following:

namespace Mike\NewSelect\Block\Product\View\Options\Type;
class Select extends \Magento\Catalog\Block\Product\View\Options\Type\Select
{
 /**
 * Return html for control element
 *
 * @return string
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
etc etc...

In my Mike/MyTheme/Magento_Catalog/catalog_product_view.xml file, I have updated the calling block:

<block class="Magento\Catalog\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select_hamper.phtml"/>

and changed it to:

<block class="Mike\NewSelect\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select.phtml"/>

Can anyone see where I'm going wrong?

Thank you

Source Link
MikeMason
  • 1.4k
  • 5
  • 26
  • 47

Magento 2: New module causing crash

I'm trying to override the module-catalog/Block/Product/View/Options/Type/Select.php class with a new version which includes a few other bits of custom php. I have done the below and then run the php bin/magento setup:upgrade and php cache:clean commands but the product page is showing a blank/white page.

I created a 'code' folder and placed it here:

/app/code/

I created a Vendor folder titled 'Mike' and placed it here:

/app/code/Mike/

Within the new Mike vendor folder, I created an etc folder: /app/code/Mike/etc/. Within this etc folder, I have added a di.xml file containing the below:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="Magento\Catalog\Block\Product\View\Options\Type\Select" type="Mike\NewSelect\Block\Product\View\Options\Type\Select" />
</config>

I then created a Module folder titled NewSelect and placed it in the Mike vendor folder:

/app/code/Mike/NewSelect/

I then just copied over the directory structure (without the containing files, except for Select.php) of the core Select class and placed it in the NewSelect module folder, resulting in the below:

app/
├── Mike/
│ ├── NewSelect/
│ │ ├── Block/
│ │ │ ├── Product/
│ │ │ │ ├── View/
│ │ │ │ │ ├── Options/
│ │ │ │ │ │ ├── Type/
│ │ │ │ │ │ │ ├── Select.php
│ │ ├── etc/
│ │ │ ├── di.xml

Within my new Select class (app/code/Mike\NewSelect\Block\Product\View\Options\Type\Select.php), I have extended the core Select class with the following:

namespace Mike\NewSelect\Block\Product\View\Options\Type;
class Select extends \Magento\Catalog\Block\Product\View\Options\Type\Select
{
 /**
 * Return html for control element
 *
 * @return string
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
etc etc...

Can anyone see where I'm going wrong?

Thank you

default

AltStyle によって変換されたページ (->オリジナル) /