2014-10-30 1 views
0

저는 작은 지불 모듈을 생성합니다. 구성은 간단한 CRUD로 관리해야하며 HelperList 클래스를 사용하여 데이터베이스에 저장된 레코드가있는 테이블을 표시합니다. 테이블 데이터베이스 구조의 하나는 내가 활성화 또는 내가 '활성화를 사용하여 버튼을 통해 항목을 비활성화 할 예정으로 그래서, list_fields 값이헬퍼리스트 상태 액션 (아약스 포함)

array(
'id' => array(
    title' => $this->l('Id'), 
    //'width' => 140, 
    'type' => 'text', 
    'align' => 'center' 
), 
'name' => array(
    'title' => $this->l('Name'), 
    //'width' => 140, 
    'type' => 'text', 
    'align' => 'center' 
), 
'active' => array(
    'title' => $this->l('Status'), 
    //'width' => 140, 
    'active' => 'statusItem', 
    'type' => 'boolean', 
    'align' => 'center', 
    'ajax'=> true 
) 
); 

처럼이

'CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'MODULE_ITEM 
(
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(100) NOT NULL, 
    `active` VARCHAR(3) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;' 

유사하다 '및'ajax '옵션을 사용하고 모듈 구성 페이지에서 렌더링 할 때 해당 열에 대해 생성 된 링크는 index.php?controller=AdminModules&configure=Example&item_id=4&statusItem&action=statusItem&ajax=1&(...)과 같습니다. statusItem은 작업의 이름입니다.

한편,이 기능을 모듈 기본 파일에 작성했는데,이 기능을 사용하면 항목 상태가 변경됩니다.

public function ajaxProcessStatusItem() 
{ 
    $id=(int)Tools::getValue('item_id'); 
    $value=(int) Db::getInstance()->executeS($this->createSelectQuery('module_item','item_id',$id))[active]; 
    Db::getInstance()->update('module_item', array('active' => !$value), 'item_id='.$id); 
    die(); 
} 

나는 목록을 작성하는 공식 문서의 this 기사를 사용하고 있지만, 아무리 내가 ('ajaxProcess'를 사용 어떤 이름, 'ajaxProcessSatusItem', 'statusItem', 모든 모자는 내가 생각할 수있는 변주 없습니다 의) 내가 얻는 누구나는 응답의 빈 페이지 다. 그리고 상태의 어떤 변경도 없다. 소스 코드를 살펴 봤는데 HelperList 클래스에 함수 호출 방법에 대한 설명이 없습니다.

도움이 될 것입니다. 당신이 당신의 데이터 객체에 대해 objectModel를 클래스를 사용하는 경우

답변

0

, 당신은 인 타이틀 한 줄을 추가하여 토글 버튼을 생성 할 수 있습니다

AdminProductTabController.php or when defining fields somwehre else 
and calling HelperList->generate() 

'active' => array(
    'title'  => 'Active', 
    'active'  => 'status', 
    'filter_key' => '!active', 
    'type'  => 'bool', 
    'width'  => 'auto', 
    'orderby' => false, 
    'search'  => false, 
) 

라인 'active' => 'status',는 모든 필드 이름을 참조하지 않습니다. Admin {YourObjectModel} Controller의 목록 필드 속성을 정의하거나 다른 곳에서 HelperList를 호출하는 경우 목록 정의에이 행을 추가하십시오.

내 objectModel를에서 발췌 :

ProductTab.php 

class ProductTab extends ObjectModel { 
....... 
    public static $definition = array(
    .......... 
    'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool',), 

내 코드를 보면서 나는 실제로 특수 처리 함수를 호출 한 것으로 나타났습니다 :이 당신을 도울 것입니다

AdminProductTabController.php 

public function initProcess() 
{ 
    $id_product_tab = (int)Tools::getValue('id_product_tab'); 
    $product_tab = new ProductTab($id_product_tab); 

    $isStatusAction = Tools::getIsset('status'.$this->table); 

    if ($isStatusAction) 
    { 
     $product_tab->toggleStatus(); 
     Tools::redirectAdmin($this->href_back); 
    } 
} 

희망을.

+0

'활성'입력란이 부울이어야합니까? 대안으로 나는 AdminStatusesController에서 보여준 것과 비슷한 ajaxProcessStatusItem을 사용했으나 그것도 작동하지 않았다. – Trickylastname

+0

답변을 업데이트했습니다. – gskema