php – 为每个最终可配置选项动态创建添加到购物车块,Helper为$this

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 为每个最终可配置选项动态创建添加到购物车块,Helper为$this脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个项目,在产品页面而不是正常的可配置选项上,有一些可配置选项,然后查询数据库以查看特定供应商是否携带该产品.然后它通过 javascript显示供应商列表,如下所示.

我希望添加购物车块显示在每个供应商旁边.因为这都是动态创建的,所以我必须将供应商ID传递给我创建的“添加到购物车”脚本.我拿了原来的app / design / frontend / base / default / template / cataLOG / PRoduct / view / addtocart.phtML并自己创建,如下所示.以下PHP文件是通过ajax调用的.最初的addtocart.phtml有一堆$this变量.我需要模拟$this(无论模型,它所指的帮助器),以便这个块工作.我没有太大的成功.有人可以看到我做错了什么或我能做些什么不同?非常感谢!

<?PHP

require_once('/VAR/www/Staging/public_html/app/Mage.PHP');
umask(0);
Mage::app();

//ensure that the value is legITiMATE
if($_POST && is_numeric($_POST['value'])){
    $value = $_POST['value'];
}

//pass this in your ajax call for the add button
if($_POST &amp;& is_numeric($_POST['product_id'])){
    $product_id = $_POST['product_id'];
}

$helPEr = Mage::helper('core'); //for translation
$block = new Mage_Catalog_Blockproduct_View(); // not best practice,but neither are standalones
$product =  Mage::getModel('catalog/product')->load($product_id); // no need to use the _ here,it's not protected/private; additonally Mage::registry won't work because you're technically not on a product detail page

$buttonTitle = ''; //you are using this,but it isn't set

?>
<div class="add-to-cart">
    <label for="qty"><?PHP echo $helper->__('Qty:') ?></label>
    <input type="text" name="qty" id="qty" maxlength="12" value="<?PHP echo $block->getProductDefaultQty($product) * 1 ?>" title="<?PHP echo $helper->__('Qty') ?>" class="input-text qty" />
    <button onclick="window.location = '<?PHP echo Mage::helper('checkout/cart')->getAddUrl($product);?>'" type="button" title="<?PHP echo $buttonTitle ?>" class="button BTn-cart" id='$value'><span><?PHP echo $buttonTitle ?></span></button>
</div>
Mage_Catalog_Blockproduct_View是您目前收到的错误.记住Magento类名反映了目录结构.

我相信你想要Mage_Catalog_Block_Product_View

但是,从技上讲,你不会想在这里发起一个阻止,但我意识到这是为了解决这个问题 – >>引用.此外,我不会再次重新初始化整个堆栈.更好的方法是创建一个新模块并使用自定义控制器进行添加到购物车操作.

<?PHP
require_once Mage::getModuleDir('controllers','Mage_Checkout') . DS . 'CartController.PHP';

class NS_AjaxCart_CartController extends Mage_Checkout_CartController
{
    public function addAction()
    {
        $params = $this->getRequest()->getParams();
...

然后,您将在模块中使用一个简单的构造函数创建一个新块,以设置您将在块中使用的模板.相近:

public function __construct()
{
        parent::__construct();
        $this->setTemplate('catalog/vendoraddtocart.phtml');
}

要动态创建一个块,因为$可以访问:

$这 – > getLayout() – > createBlock( ‘CMS /块’) – > setBlockId( ‘vendor_add_to_cart’) – > tohtml()

考虑阅读并更好地理解toHtml方法,以及块和布局如何工作:

> http://codemagento.com/2011/03/how-blocks-and-phtml-work-together/
> http://adeptasoftware.co.uk/blog/magento-ajax-add-cart-extension/
> http://store.pulsestorm.net/products/no-frills-magento-layout
> http://www.excellencemagentoblog.com/magento-add-product-to-cart-ajax
> Magento override controller

希望这可以帮助.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 为每个最终可配置选项动态创建添加到购物车块,Helper为$this全部内容,希望文章能够帮你解决php – 为每个最终可配置选项动态创建添加到购物车块,Helper为$this所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。