fRAiLtY- Posted March 12, 2012 Share Posted March 12, 2012 Hi guys, I've got a situation where, for example, file1.php contains a method call and the echo'ing of a table. file2.php contains the method and is what processes and ultimately produces the data and sends it back to file1.php for formatting. I need to mix this up a bit by adding the table echo's to file2.php but retain the "call" in file1.php. Here's my 2 files so to speak currently: File1.php - the table view and call <?php $childProducts = Mage::getModel('catalog/product_type_configurable')->getMatrix(null, $_product); $x = array(); foreach ($childProducts as $children) { $x[$children->getAttributeText('quantity')][$children->getAttributeText('size')] = array('id'=>$children->getId(), 'price'=>number_format($children->getPrice(),'2'), 'name'=>$children->getName()); } ksort( $x ); echo '<table class="matrix"><tr><th></th>'; foreach( array_keys(current($x)) as $size ) { echo '<th>'.$size.'</th>'; } echo '</tr>'; foreach( $x as $quantity => $data ) { echo '<tr><th>'.$quantity.'</th>'; foreach( $data as $item ) { echo '<td><a href="/checkout/cart/add?product='.$item[id].'" title="Add '.$item[name].' to basket">£'.$item[price].'</a></td>'; } echo '</tr>'; } echo '</table>'; ?> File2.php - the method that processes <?php class OrganicInternet_SimpleConfigurableProducts_Catalog_Model_Product_Type_Configurable extends Mage_Catalog_Model_Product_Type_Configurable { /** * Retrieve array of "subproducts" for 300gsm flyers based on standard getUsedProducts * * @param array * @param Mage_Catalog_Model_Product $product * @return array */ public function getMatrix($requiredAttributeIds = null, $product = null) { Varien_Profiler::start('CONFIGURABLE:'.__METHOD__); if ($this->getProduct($product)->hasData($this->_usedProducts)) { if (is_null($requiredAttributeIds) and is_null($this->getProduct($product)->getData($this->_configurableAttributes))) { // If used products load before attributes, we will load attributes. $this->getConfigurableAttributes($product); // After attributes loading products loaded too. Varien_Profiler::stop('CONFIGURABLE:'.__METHOD__); return $this->getProduct($product)->getData($this->_usedProducts); } $usedProducts = array(); $collection = $this->getUsedProductCollection($product) ->addAttributeToSelect('*') ->addFieldToFilter('name', array('like' => '%300gsm Flyers%')); //->groupByAttribute('size'); $x = $collection->getSize(); // ->addFilterByRequiredOptions(); if (is_array($requiredAttributeIds)) { foreach ($requiredAttributeIds as $attributeId) { $attribute = $this->getAttributeById($attributeId, $product); if (!is_null($attribute)) $collection->addAttributeToFilter($attribute->getAttributeCode(), array('notnull'=>1)); } } foreach ($collection as $item) { $usedProducts[] = $item; } $this->getProduct($product)->setData($this->_usedProducts, $usedProducts); } Varien_Profiler::stop('CONFIGURABLE:'.__METHOD__); return $this->getProduct($product)->getData($this->_usedProducts); } } ?> I need the tabular part, from x = array downwards from File1.php to be part of File2.php, however I need to retain the $childProducts = Mage.... part in File1.php and pass any necessary data through to the method, however which ever way I try it I end up with errors about undefined methods etc. Visually I will see no difference on screen as it should still create the same table in the same way, however I'm going to be using AJAX to produce a new table on select so need the table as part of the method. Any help is greatly appreciated as I keep breaking it! Cheers. Link to comment https://forums.phpfreaks.com/topic/258725-merging-2-parts-of-code/ Share on other sites More sharing options...
RussellReal Posted March 12, 2012 Share Posted March 12, 2012 <?php public function getTable($product = false) { if (!$product) return false; $childProducts = $this->getMatrix(null, $product); $x = array(); $r = ''; foreach ($childProducts as $children) { $x[$children->getAttributeText('quantity')][$children->getAttributeText('size')] = array('id'=>$children->getId(), 'price'=>number_format($children->getPrice(),'2'), 'name'=>$children->getName()); } ksort( $x ); $r .= '<table class="matrix"><tr><th></th>'; foreach( array_keys(current($x)) as $size ) { $r .= '<th>'.$size.'</th>'; } $r .= '</tr>'; foreach( $x as $quantity => $data ) { $r .= '<tr><th>'.$quantity.'</th>'; foreach( $data as $item ) { $r .= '<td><a href="/checkout/cart/add?product='.$item[id].'" title="Add '.$item[name].' to basket">£'.$item[price].'</a></td>'; } $r .= '</tr>'; } $r .= '</table>'; return $r; } ?> add this to file2.php and use it like <?php echo Mage::getModel('catalog/product_type_configurable')->getTable($_product); ?> Link to comment https://forums.phpfreaks.com/topic/258725-merging-2-parts-of-code/#findComment-1326375 Share on other sites More sharing options...
xyph Posted March 12, 2012 Share Posted March 12, 2012 Include file2 at the top of file1? Link to comment https://forums.phpfreaks.com/topic/258725-merging-2-parts-of-code/#findComment-1326455 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.