我尝试了不同的方法将我的 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();
}
IndexController.php 我想获取/使用Selected&#34; Javascript_value&#34;在 Category.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的想法,尝试将数据保存在数据库中并尝试获取它。
答案 0 :(得分:0)
您只是重定向控件而不发布任何表单。这就是为什么你无法获得数据。你可以做两件事。
在“ChooseContact”js函数中,使用get方法重新选择syncAction和所选值,然后删除操作按钮。
在操作按钮中,您可以调用js函数并获取下拉列表选择值,然后重定向,而不是重定向控件。请参阅:Magento adminhtml grid with javascript action column
希望这会有所帮助!