Как удалить пользовательскую запись таблицы, нажав кнопку удалить в файле 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-код. Сведения, показанные в таблице, были взяты из пользовательской таблицы. Здесь, когда я нажимаю кнопку удалить, мне нужно удалить запись из базы данных.
2
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
Некоторые Другие Подходы
- Использование Подключение ресурсов Метод
<?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;
}
}
?>
- Использование Метода 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