簡體   English   中英

如何將javascript值傳遞給控制器​​動作?

[英]How to pass javascript value to controller action?

我嘗試了多種方法來將我選擇的值從Category.php文件轉換為控制器文件( IndexController.php )。 為此,我有3個文件Category.php作為渲染器(這是我在magento中添加到Grid.php的下拉列表)

<?php

class Ns_Thorleif_Block_Adminhtml_Commerciaux_Edit_Form_Renderer_Category extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{   
     public function render(Varien_Object $row)
{

$category = Mage::getModel('thorleif/category')->getCollection();

$category_rows = $category->getData();
$html = '<select id="select_category" name="select_category" onchange="ChooseContact(this)">';
$sep = '';
?>
<input type="text" name="id_cat" id="id_cat" value="" />
<?php

foreach ($category_rows as $rows) {

    // put the correct key here

    if (!$rows['level']) {
        $html .= $sep . "<optgroup label='{$rows['name']}'>";
        $sep = '</optgroup>';
    } else {
        $nbsp = str_repeat('&nbsp;', ($rows['level'] - 1)* 5);
        $html .= "<option value='{$rows['id_linio_category']}' title='{$rows['name']}' selected>
        $nbsp {$rows['name']}</option>";
    }
}
$html .= '</select>';
return $html;
}
}
?>

Grid.php

 public function _prepareColumns()
        {
    $this->addColumn('lin',
                array(
                    'header' => 'Lin Category',
                    'align' => 'left',
                    'index' => 'lin',
                    'filter'    => false,
                    'sortable'  => false,
                    'renderer' => 'Ns_Thorleif_Block_Adminhtml_Commerciaux_Edit_Form_Renderer_Category'
                )
            );
            $this->addColumn('action',
                array(
                    'header'    =>  Mage::helper('customer')->__('Action'),
                    'width'     => '100',
                    'type'      => 'action',
                    'getter'    => 'getId',
                    'actions'   => array(
                        array(
                            'caption'   => Mage::helper('customer')->__('Sync'),
                            'url'       => array('base'=> '*/*/sync'),
                            'field'     => 'id',
                            'target'=>'_blank'
                        )
                    ),
                    'filter'    => false,
                    'sortable'  => false,
                    'index'     => 'stores',
                    'is_system' => true,
            ));
            return parent::_prepareColumns();
}

我想在其中獲取/使用Category.php中選定的“ Javascript_value”的IndexController.php

public function syncAction()
    {

    //var_dump($_REQUEST['id_cat']);
    //var_dump($_POST['id_cat']);
    //var_dump($_GET['id_cat']);
        $id = $this->getRequest()->getParam('id');
        $products = Mage::getModel('catalog/category')
                    ->load($id)
                    ->getProductCollection()->getData();

        $send = "<Request>\n";

        Foreach($products as $values){
            $code = Mage::getModel('catalog/product')->load($values['entity_id'])->getData();
            $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($values['entity_id']);


            $send .= "<Product>".$this->getProductXml($code, $commercial, ***JAVASCRIPT_VALUE***, $stock)."</Product>\n";

        }
        $send .="</Request>"; 
        $api = new Ns_Thorleif_Adminhtml_IndexController();
        $response = $api->postProductAction($send);
        echo "<xmp>$send</xmp>";
        echo "<xmp>$response</xmp>";
    }

這3個文件的結果在相同的首頁上Category.php = select dropdownlist,Grid.php =完整網格,包括下拉列表列,IndexController.php =我用來處理某些數據的函數。

有什么建議嗎? 我嘗試過get / post / request,嘗試將數據保存在數據庫中並嘗試獲取它。

您只是重定向控件而不發布任何表單。 這就是為什么您無法獲取數據的原因。 您可以做兩件事。

  1. 在“ ChooseContact” js函數中,重新將其與get方法中的選定值重新同步為syncAction並刪除操作按鈕。

  2. 在操作按鈕中,您可以調用js函數並獲取下拉列表中的選定值,然后重定向,而不是重定向控件。 請參閱: Magento帶有javascript操作列的adminhtml網格

希望這會有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM