Добрый день всем
прежде чем это удалится, я должен отметить, что я пытался найти это, но я все еще не могу понять, почему это не работает
Пожалуйста, может кто-нибудь помочь мне с этим? Я пытался сделать это в течение нескольких недель, и я не могу понять, почему моя кнопка удаления не работает Я сделал это с помощью кода igniter3, и он работает, но я не могу заставить его работать, как я все еще учусь и новичок, все, что я хочу сделать, это удалить сообщение с кнопкой, которую я создал! это все, пожалуйста, объясните, что я сделал не так, чтобы я мог понять, что это всего лишь тестовый проект, чтобы научить себя воспламенителю кода 4, большое спасибо Извините за мой плохой английский
так вот мой код
Модель (Newsmodel.php)
<?php
namespace App\Models;
use CodeIgniter\Model;
class NewsModel extends Model
{
protected $table = 'news';
protected $allowedFields = ['title', 'slug', 'body'];
public function getNews($slug = false)
{
if ($slug === false) {
return $this->findAll();
}
return $this->asArray()
->where(['slug' => $slug])
->first();
}
}
вот Контроллер (News.php)
<?php
namespace App\Controllers;
use App\Models\NewsModel;
use CodeIgniter\Controller;
class News extends Controller
{
public function index()
{
$model = new NewsModel();
$data = [
'news' => $model->getNews(),
'title' => 'News archive',
];
echo view('templates/header', $data);
echo view('news/overview', $data);
echo view('templates/footer', $data);
}
public function view($slug = null)
{
$model = new NewsModel();
$data['news'] = $model->getNews($slug);
if (empty($data['news'])) {
throw new \CodeIgniter\Exceptions\PageNotFoundException('Cannot find the news item: ' . $slug);
}
$data['title'] = $data['news']['title'];
echo view('templates/header', $data);
echo view('news/view', $data);
echo view('templates/footer', $data);
}
public function create()
{
$model = new NewsModel();
if ($this->request->getMethod() === 'post' && $this->validate([
'title' => 'required|min_length[3]|max_length[255]',
'body' => 'required',
])) {
$model->save([
'title' => $this->request->getPost('title'),
'slug' => url_title($this->request->getPost('title'), '-', true),
'body' => $this->request->getPost('body'),
]);
echo view('news/success');
} else {
echo view('templates/header', ['title' => 'Create a news item']);
echo view('news/create');
echo view('templates/footer');
}
}
}
Просмотр (view.php)
<h2><?=esc($news['title'])?></h2>
<p><?=esc($news['body'])?></p>
<button><a href = "/news/delete" class = "btn btn-danger">Delete</a></button>
Я пробовал следующее в своем контроллере
и он не удалил его из моей базы данных, но я также не получил ошибки! он просто перенаправляет меня на мою страницу успеха.
public function delete($id = null)
{
$model = new NewsModel();
$model->delete([
$model->where('id', $id)->delete(),
]);
return view('news/delete');
}
я тоже пробовал это
public function delete()
{
$model = new NewsModel();
if ($this->request->getMethod() === 'post') {
$model->delete([
'title' => $this->request->getPost('title'),
'body' => $this->request->getPost('body'),
]);
echo view('news/delete');
}
БД настроена
DB NAME= toets
TABLE= news
id|title|slug|body
я получаю сообщение об ошибке undefined variable $ id, однако, если я перейду в $ model-> where ('id', 1) -> delete (); он удаляет сообщение с идентификатором 1, но как я могу сделать его таким, чтобы я был динамическим, и он может удалить сообщение, в котором я нахожусь, например, если я в сообщении 3, он должен удалить сообщение 3, а не сообщение 1
Вы можете добавить скрытое поле ввода, содержащее post_id. И в вашем контроллере сделайте что-то вроде этого: $id = $this->request->getVar('your_post_id'); ... .
нет, я пробовал не работает, но все равно спасибо
хорошо, я исправлю это спасибо, сэр






я изменил свою кнопку просмотра на
<a href = "<?= '/news/delete/' . esc($news['id']) ?>">Delete</a>
и в моем контроллере я сделал
public function delete($id)
{
$model = new NewsModel();
$model->where('id', (int) $id)->delete();
return view('news/delete');
}
просто попробуйте
$model->where('id', $id)->delete();и посмотрите этот документ: codeigniter4.github.io/userguide/models/…