Làm cách nào để tạo lưới quản trị với trường tăng không tự động?


7

Tôi muốn tạo một lưới quản trị có thể chỉnh sửa. Vấn đề là cột id của lưới này sẽ là giá trị gia tăng không tự động. Điều này có thể thực hiện?

Bất kỳ ai có thể đề nghị hướng dẫn hoặc bài viết liên quan đến điều này?

CẬP NHẬT: Tôi đang sử dụng một bộ sưu tập thu được bằng cách tham gia bộ sưu tập thuộc tính magento với bảng tùy chỉnh của tôi. Nhưng trong mã được cung cấp bên dưới, nó chỉ chứa bộ sưu tập thuộc tính sản phẩm. IDcột sẽ chứaattribute_id

Lưới.php

<?php
class BalanceAP21Connector_ProductSync_Block_Adminhtml_Attributemapping_Edit_Tab_Attribute
    extends Mage_Adminhtml_Block_Widget_Grid
{
    /**
     * Constructor, ensures pagination is hidden
     */
    public function _construct()
    { 
        $this->setId('attribute_edit');
        $this->setUseAjax(true);
        $this->setDefaultSort('attribute_id');
        $this->setPagerVisibility(true);       
        $this->setSaveParametersInSession(true);         
        parent::_construct();
    }

    /**
     * Prepare grid collection object. Collection object populated
     * based on Apparel 21 module settings in admin configuration section.
     */
    public function _prepareCollection()
    {
        $collection = Mage::getResourceModel('catalog/product_attribute_collection');
        $collection->addFieldToFilter('frontend_label', array('notnull' => true));
        //echo $collection->getSelectSql();exit;
        $this->setCollection($collection);
        parent::_prepareCollection();
        return $this;
    }

    /**
     * Prepare columns for the grid
     */
    public function _prepareColumns()
    {
        $helper = Mage::helper('productsync');
        $this->addColumn('attribute_id', array(
                'header' => $helper->__('ID'),
                'index'  => 'attribute_id'
        ));

        $this->addColumn(
            'frontend_label',
            array(
                'header' => $helper->__('Reference Type Name'),
                'index'  => 'frontend_label'
            )
        );

        $this->addColumn(
            'attribute_ids',
            array(
                'header'   => $helper->__('Attribute'),
                'width'    => '1',
                'type'     => 'options',
                'index'    => 'attribute_ids',
                'editable' => true,
                'options'  => Mage::getModel('productsync/attributemapping_system_config_source_attributes')
                    ->toOptionArray(),
                'renderer' => 'productsync/adminhtml_attributemapping_widget_grid_column_renderer_options',
            )
        );

        $this->addColumn(
            'note_code',
            array(
                'header' => $helper->__('AP21 note code'),
                'index'  => 'note_code',
                'type'   => 'input'
            )
        );

        $this->addColumn(
            'note_regexp',
            array(
                'header' => $helper->__('Note regexp'),
                'index'  => 'note_regexp',
                'type'   => 'input'
            )
        );
        return parent::_prepareColumns();
    }

    public function getGridUrl()
    {
        //return $this->getUrl("*/*/edit", array("attribute_id" => $row->getId()));
        return $this->getUrl('*/*/grid', array('_current'=>true));
    }
}

Lưới của tôi là như dưới đây. nhập mô tả hình ảnh ở đây


câu hỏi hay. +1 cho điều đó. Vui lòng thêm chi tiết cho câu hỏi? Bạn đang tải một bộ sưu tập thực sự từ cơ sở dữ liệu trong lưới? Nếu có cung cấp thêm chi tiết về điều đó. Nếu có thể, hãy cho chúng tôi xem tệp lưới của bạn
Rajeev K Tomy

Xin vui lòng bất kỳ đề xuất sẽ được thực sự đánh giá cao
Sukeshini

Cảm ơn rất nhiều. Tôi chỉnh sửa câu hỏi. Bộ sưu tập không phải từ một bảng vật lý thực sự.
Sukeshini

nếu đó là trường hợp, xin vui lòng cho chúng tôi xem bộ sưu tập mà bạn đang sử dụng trong trang lưới của bạn
Rajeev K Tomy

Cập nhật lại câu hỏi
Sukeshini

Câu trả lời:


1

Để thêm một hành động chỉnh sửa và chuyển một số giá trị cùng với hành động đó, bạn có thể sử dụng mã dưới đây

public function getRowUrl($row)
{
    return $this->getUrl('*/*/edit', array(
        'store'=>$this->getRequest()->getParam('store'),
        'id'=>$row->getId())
    );
}

Điều này sẽ đính kèm một url hàng cho trình xử lý sự kiện js và do đó khi bạn nhấp vào một mục lưới, nó sẽ kích hoạt editActiontrong tệp điều khiển của bạn. Bạn có thể nhận được các tham số như thế này.

<?php
class [Namespace]_[Module]_[Some]Controller extends Mage_Adminhtml_Controller_Action
{

    public function editAction()
    {
         $id = (int) $this->getRequest()->getParam('id');
    }
}

Cảm ơn đã phản hồi, nhưng tôi không sử dụng cột hành động. Có một nút lưu trong thùng chứa lưới và muốn lưu tất cả các sửa đổi khi người dùng nhấp vào nút đó
Sukeshini

Tôi không hiểu bạn. Bạn nói rằng bạn muốn biết làm thế nào để vượt qua id attrbute khi một hàng được chỉnh sửa? getRowUrlđược sử dụng để làm điều đó. bạn không muốn thêm bất kỳ actioncột nào ở đây. Chỉ cần thêm cái này, sau đó bạn nhấp vào bất kỳ hàng nào, nó sẽ kích hoạt editActiontrong bộ điều khiển của bạn
Rajeev K Tomy

Ngay cả khi điều này trông giống như một lưới, thực sự là một container dạng giữ nó. Vì vậy, chỉ có một nút để gửi biểu mẫu. Tôi sẽ không gửi mỗi hàng
Sukeshini

Tôi xin lỗi. Vậy thì bạn đang cố lưu ở đây là gì .. Ý tôi là từ trang lưới? và bạn không có trang chỉnh sửa ở đây, để chỉnh sửa từng hàng?
Rajeev K Tomy

Chỉnh sửa có thể được thực hiện trong lưới tự nó, bạn không cần phải chuyển hướng đến bất kỳ trang chỉnh sửa. Vui lòng kiểm tra hình ảnh tôi đã đính kèm. Tôi nghĩ rằng điều đó sẽ cho bạn một sự hiểu biết rõ ràng
Sukeshini
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.