2016-10-24 7 views
0

私はPrestaShopで管理タブを実装しようとしています。私はデータベースからレコードを見せたい。編集、更新、削除オプションが必要な各レコードについてPrestaShop:管理者タブを作成し、編集/更新/削除アクションでレコードを表示

class EblPaymentModel extends ObjectModel 
 
{ 
 
    private $_catTree = array(); 
 

 
    public $id; 
 
    public $cart_id; 
 
    public $order_id; 
 
    public $ebl_order_id; 
 
    public $ebl_status; 
 
    public $ebl_result; 
 
    public $ebl_result_code; 
 
    public $ebl_card_number; 
 
    public $ebl_transaction_id; 
 
    public $ebl_request; 
 
    public $ebl_response; 
 
    public $created_at; 
 
    public $updated_at; 
 

 
    //Multilang Fields 
 
    public $name; 
 
    public $description; 
 
    public $meta_description; 
 
    public $link_rewrite; 
 

 
    /** 
 
    * @see ObjectModel::$definition 
 
    */ 
 
    public static $definition = array(
 
     'table' => 'ebl_payments', 
 
     'primary' => 'id', 
 
     'multilang' => false, 
 
     'fields' => array(
 
      //Fields 
 
      'cart_id' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 
 
      'order_id'    => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 
 
      'ebl_order_id'    => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 
 
      'ebl_status'   => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 
 
      'ebl_result'    => array('type' => self::TYPE_INT), 
 
      'ebl_result_code'  => array('type' => self::TYPE_STRING), 
 
      'ebl_card_number'   => array('type' => self::TYPE_STRING), 
 
      'ebl_transaction_id'   => array('type' => self::TYPE_STRING), 
 
      'ebl_request'   => array('type' => self::TYPE_STRING), 
 
      'ebl_response'   => array('type' => self::TYPE_STRING), 
 
      'created_at'   => array('type' => self::TYPE_STRING), 
 
      'updated_at'   => array('type' => self::TYPE_STRING), 
 

 
      //Multilanguage Fields 
 
      'name'    => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 250), 
 
      'description'  => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 250), 
 
      'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 250), 
 
      'link_rewrite'  => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 250), 
 
     ) 
 
    );

class AdminEblpaymentController extends ModuleAdminController 
 
{ 
 
    public function __construct() 
 
    { 
 
     $this->className = 'EblPaymentModel'; 
 
     $this->table = 'ebl_payments'; 
 
     $this->identifier = "id"; 
 
     $this->_defaultOrderBy = 'created_at'; 
 
     $this->_defaultOrderWay = 'desc'; 
 
     $this->orderBy = "created_at"; 
 
     $this->orderWay = "desc"; 
 
     $this->meta_title = $this->l('EBL payment attempts'); 
 
     $this->deleted = false; 
 
     //$this->explicitSelect = true; 
 
     $this->list_no_link = true; 
 
     $this->context = Context::getContext(); 
 
     //$this->lang = true; 
 
     $this->bootstrap = true; 
 

 
     $this->sortedTree = array(); 
 

 
     if (Shop::isFeatureActive()) { 
 
      Shop::addTableAssociation($this->table, array('type' => 'shop')); 
 
     } 
 

 
     $this->addRowAction('edit'); 
 
     $this->addRowAction('details'); 
 
     $this->addRowAction('updatestatus'); 
 
     $this->addRowAction('cart'); 
 

 
     $this->fields_list = array(
 
      'id' => array(
 
       'title' => $this->l('ID'), 
 
       'type' => 'int', 
 
       'align' => 'center', 
 
       'width' => 25, 
 
      ), 
 
      'cart_id' => array(
 
       'title' => $this->l('Cart id'), 
 
       'width' => 'auto', 
 
       'orderby' => false 
 
      ), 
 
      'order_id' => array(
 
       'title' => $this->l('Order id'), 
 
       'width' => 'auto', 
 
       'orderby' => false 
 
      ), 
 
      'status' => array(
 
       'title' => $this->l('Status'), 
 
       'width' => 'auto', 
 
       'orderby' => false 
 
      ), 
 
      'result' => array(
 
       'title' => $this->l('Result'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => false 
 
      ), 
 
      'result_code' => array(
 
       'title' => $this->l('Result code'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => false 
 
      ), 
 
      'dbbl_transaction_id' => array(
 
       'title' => $this->l('Transaction id'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => false 
 
      ), 
 
      'dbbl_response' => array(
 
       'title' => $this->l('Response'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => false 
 
      ), 
 
      'created_at' => array(
 
       'title' => $this->l('Created at'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => true 
 
      ), 
 
      'updated_at' => array(
 
       'title' => $this->l('Updated at'), 
 
       'width' => 70, 
 
       'align' => 'center', 
 
       'orderby' => true 
 
      ) 
 
     ); 
 
     parent::__construct(); 
 
    } 
 
    
 
    }

私のモデルは/ EblpaymentModel.phpファイルには、次のコードが含まれています

マイコントローラー/管理/ AdminEblpayment.phpファイルには、次のコードが含まれています

BOの "Eblpayment"タブには以下のリストがありますが、編集、更新、削除はできません。私は、[編集]リンクをクリックすると

enter image description here

は、私が得た - エラー「EblPaymentModelモデルが見つかりません」:

誰かが私に「管理タブ」で管理モジュールを開発するためのいくつかのよく文書化されたリソースのリンクを与えてください」編集、更新、削除アクションを含むリストを記録します。

ありがとうございます。

答えて

1

このコントローラーファイルの上にrequire_once 'path_to_your_model_file'が必要です。

リストレンダリングではモデルクラスが使用されないため、エラーは発生せず、表示/編集で使用されます。

また、__construct()メソッドでは、表示/編集用に$this->fields_formアレイを定義する必要があります。

適切な定義については、ドキュメントまたはネイティブ管理コントローラを参照してください。

このように行ボタンが追加されました。 「whatevernameyouwant」をクリックしたときにpostProcess()processWhatevernameyouwant()renderView()メソッドを使用すると思いたとえばページまたはプロセス何か(DBまたは任意に保存する)をロードするに

$this->addRowAction('edit'); 
$this->addRowAction('update'); 
$this->addRowAction('delete'); 
$this->addRowAction('whatevernameyouwant'); 

public function postProcess() { 
    if (Tools::getIsset('whatevernameyouwant') { 
     // Set display to 'view' if you want to render some content 
     // When display is set to 'view' the controller will call renderView() method to display content 
     $this->display = 'view'; 

     // Set action if you want to process something 
     // When you set an action the controller will call processWhatevernameyouwant() method 
     $this->action = 'whatevernameyouwant'; 
    } 

    return parent::postProcess(); 
} 

public function renderView() { 
    // return some content related to whatevernameyouwant action 
    if (Tools::getIsset('whatevernameyouwant') { 
     return $someTemplateContent; 
    } 

    return parent::renderView(); 
} 

public function processWhatevernameyouwant() { 
    // process some stuff in here 
} 
+0

ありがとうございます。レコードごとに更新アクションを追加するにはどうすればよいですか? –

+0

@JahangirAlam私は答えを更新しました。 – TheDrot

関連する問題