[英]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(' ', ($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,嘗試將數據保存在數據庫中並嘗試獲取它。
您只是重定向控件而不發布任何表單。 這就是為什么您無法獲取數據的原因。 您可以做兩件事。
在“ ChooseContact” js函數中,重新將其與get方法中的選定值重新同步為syncAction並刪除操作按鈕。
在操作按鈕中,您可以調用js函數並獲取下拉列表中的選定值,然后重定向,而不是重定向控件。 請參閱: Magento帶有javascript操作列的adminhtml網格
希望這會有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.