Как удалить пользовательскую запись таблицы, нажав кнопку удалить в файле phtml в Magento 2?


Извлек сведения из моего пользовательского модуля и отобразил их в таблице. Существует опция удаления для соответствующих записей строк. Приведенные выше коды таблиц написаны на странице phtml.

Как удалить запись в бд, когда я нажимаю на опцию удалить?

<tr class="data-row" >
        <td class="admin__control-fields _no-header" >
           <fieldset class="admin__field">
              <legend class="admin__field-label">
                 <span>Image</span>
              </legend>
              <div class="admin__field-control admin__control-fields _no-header" >
                 <div class="admin__field" >
                    <div class="admin__field-control" >
                       <img class="admin__control-thumbnail" src="">
                    </div>
                 </div>
              </div>
           </fieldset>
        </td>
        <td  class="admin__control-fields _no-header">
           <fieldset class="admin__field" data-form-part="product_form" name="col[]">
              <legend class="admin__field-label">
                 <span >Color</span>
              </legend>
              <div class="admin__field-control admin__control-fields _no-header" >
                 <div class="admin__field" >
                    <div class="admin__field-control" >
                       <div class="control-table-text">
                          <span data-form-part="product_form" name="col[]"><?php echo $color_name ?></span>
                       </div>
                    </div>
                 </div>
              </div>
           </fieldset>
        </td>
        <td  class="admin__control-fields _no-header" >
           <fieldset class="admin__field" >
              <legend class="admin__field-label">
                 <span >Series</span>
              </legend>
              <div class="admin__field-control admin__control-fields _no-header" >
                 <div class="admin__field">
                    <div class="admin__field-control" >
                       <div class="control-table-text">
                          <span ><?php echo $series_name ?></span>
                       </div>
                    </div>
                 </div>
              </div>
           </fieldset>
        </td>


        <td  class="data-grid-actions-cell _fit _no-header">
            <div class="action-select-wrap" >
                <button class="action-secondary uploadtable">
                    <span >Remove</span>
                </button>

            </div>
        </td>
     </tr>

Это мой html-код. Сведения, показанные в таблице, были взяты из пользовательской таблицы. Здесь, когда я нажимаю кнопку удалить, мне нужно удалить запись из базы данных.

Author: Rita Jose, 2017-05-24

2 answers

С помощью jquery мы можем удалить это.

var url =  '<?php echo $baseurl ?>admin/helloworld/index/';
 function deleterow(rowid)
    {
        jQuery.ajax({
            url: url,
            data: { 'id' : rowid},
            type: "post",
            cache: false,
            success: function (data) {
            }
        });
    }

В пользовательском контроллере,

<?php
namespace Maxime\Helloworld\Controller\Adminhtml\Index;

Class Index extends \Magento\Backend\App\Action {

    public function __construct(\Magento\Backend\App\Action\Context $context) {
        parent::__construct($context);
    }

    public function execute() {

        $value = $this->getRequest()->getParam('id');
        $this->_resources = \Magento\Framework\App\ObjectManager::getInstance()
                    ->get('Magento\Framework\App\ResourceConnection');
                    $connection= $this->_resources->getConnection();

                    $themeTable = $this->_resources->getTableName('color_series_tab_tabless');
             $sql = "DELETE FROM $themeTable WHERE id=$value";
       // exit;
       $connection->query($sql);
    }


}
 2
Author: Rita Jose, 2017-05-30 04:44:42

Некоторые Другие Подходы

  1. Использование Подключение ресурсов Метод
<?php
namespace Vendor\Package\Controller\Custom;
use Magento\Framework\Controller\ResultFactory;
class DeleteRecord extends \Magento\Framework\App\Action\Action
{
    protected $connection;
    protected $resource;
    protected $resultRedirect;
    protected $messageManager;

    public function __construct(
        \Magento\Framework\App\ResourceConnection $resource,
        \Magento\Framework\App\Action\Context $context,   
        \Magento\Framework\Message\ManagerInterface $messageManager,     
        ResultFactory $resultRedirect
    )
    {
        $this->connection = $resource->getConnection();
        $this->resource = $resource;
        $this->resultRedirect=$resultRedirect;
        $this->messageManager = $messageManager;
        parent::__construct($context);
    }
    public function execute()
    {

            $resultRedirect = $this->resultRedirect->create(ResultFactory::TYPE_REDIRECT);
            $resultRedirect->setUrl($this->_redirect->getRefererUrl());            
            $delete_id=$this->getRequest()->getParam('delete_id');             
            $table = $this->resource->getTableName('tablename');
            $sql = "DELETE FROM $table WHERE id=$delete_id";
            $this->connection->query($sql);
            $this->messageManager->addSuccess( __('Record deleted Successfully !') );
            return $resultRedirect;

    }


}
?>
  1. Использование Метода ModelFactory
namespace Vendor\Package\Controller\Custom;

use Vendor\Package\Model\MyModelFactory;
use Magento\Framework\Controller\ResultFactory;

class DeleteRecord extends \Magento\Framework\App\Action\Action
{


    protected $myCustomModel;
    protected $resultRedirect;
    protected $messageManager;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\Message\ManagerInterface $messageManager,     
        ResultFactory $resultRedirect,
        MyModelFactory $myCustomModel
    ) {
        $this->myCustomModel= $myCustomModel;
        $this->resultRedirect=$resultRedirect;
        $this->messageManager = $messageManager;
        parent::__construct($context);
    }

    public function execute() 
    {
        $resultRedirect = $this->resultRedirect->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl($this->_redirect->getRefererUrl());        
        $delete_id = $this->getRequest()->getParam('delete_id ');
        try {
            $model = $this->myCustomModel->create();
            $model->load($delete_id);
            $model->delete();
            $this->messageManager->addSuccess( __('Record deleted Successfully !') );
            return $resultRedirect;
        } catch (\Exception $e) {
            $this->messageManager->addError($e->getMessage());
            return $resultRedirect;
        }
    }

}
 0
Author: Khushbu, 2019-07-10 11:37:03